2016-09-11 6 views
0

私はcURLリクエストを使用してXMLデータを取得していますが、これはブラウザで正常に動作しますが、PHP cURLのテキストを返します。私はここでいくつかの同様の質問を見て、答えを試した。ここにコードがあります。cURLリクエストでXML出力を強制します

$url = 'http://forecast.weather.gov/MapClick.phplat=38.4247341&lon=-86.9624086&FcstType=xml'; 
$agent = 'Myapp/v1.0 (http://example.org;[email protected])'; 

$rCURL = curl_init(); 

curl_setopt($rCURL, CURLOPT_URL, $url); 
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($rCURL, CURLOPT_USERAGENT, $agent); 
curl_setopt($rCURL, CURLOPT_HTTPHEADER, 'Content-Type: application/xml'); 
curl_setopt($rCURL, CURLOPT_BINARYTRANSFER, 1); 

$aData = curl_exec($rCURL); 
$error = curl_error($CURL); 

curl_close($rCURL); 

if ($error) 
echo ($error); 
else echo ($aData); 
+0

xmlをリクエストすると、xmlが返されます。おそらく単にテキストとして出力するだけなので、ブラウザにxml 'header( 'Content-Type:application/xml');と' $ url'にタイプミスがあります '... MapClick.phplat = 38.4247341&lo。 ..〜 '... php?lat = ... ' –

+0

これは問題ではありません。結果として、XMLタグが取り除かれたXMLは得られませんが、 XMLで。これは、予測のテキスト形式を求めるときにブラウザで取得するものです。誤字を見つけてくれてありがとう。PHPを投稿にコピーしてサイト名を変更する際にエラーが発生した。 –

+0

さて、私はあなたを理解していないと思います。ちょうどあなたのコードを実行し、有効なXML文書を得ました。ちょうどブラウザで '$ url'を開いて(ソースコードを確認して)取得します。つまり、 'simpleXML'や' DOM'を使って解析することができます。わからない。 –

答えて

0

リクエストすでにレスポンスがXML形式で返されるべきであることを指定するには、FcstTypeパラメータが含まれています:FcstType=xml

XMLレスポンス(文字列)は以下に示す通り、それはSimpleXMLElement classで解析することができ返されたら:

$url = 'http://forecast.weather.gov/MapClick.php?lat=38.4247341&lon=-86.9624086&FcstType=xml'; 
$agent = 'Myapp/v1.0 (http://example.org;[email protected])'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); 
$response = curl_exec($ch); 
curl_close($ch); 

$xml = new SimpleXMLElement($response); 
foreach($xml->period as $period){ 
    echo $period->text . "\n"; 
} 
関連する問題