在cURL请求上强制XML输出

I am using a cURL request to get XML data, which works fine in the brower but returns text in the PHP cURL. I have looked at several similar questions here and tried the answers, with no luck. Here's the code.

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

$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);
duanao4729
duanao4729 谢谢您的帮助。我能想到的唯一一件事是我的托管服务上的PHP设置很有趣。
大约 4 年之前 回复
douxin1884
douxin1884 好的,我想我不懂你。只需运行你的代码并获得有效的xml文档,就像我在浏览器中打开$url一样(检查源代码)。所以你可以使用simpleXML或DOM解析它。不知道。
大约 4 年之前 回复
dpzff20644
dpzff20644 这不是问题所在,因为我得到的结果不是剥离了XML标签的XML,而是将数据翻译成英文,其中包含许多不在XML中的内容。当我要求预测的文本格式时,这就是我在浏览器中得到的内容。感谢您发现拼写错误,这是将PHP复制到帖子并更改网站名称时出错。
大约 4 年之前 回复
donpvtzuux37724
donpvtzuux37724 如果您请求xml,则返回xml。您可能只是将其作为文本输出,因此告诉浏览器您需要xml标题('Content-Type:application/xml');$url中有拼写错误...MapClick.phplat=38.4247341&lo...-...php?lat=...
大约 4 年之前 回复

1个回答

Your request already contains FcstType parameter to specify that response should be returned in XML format: FcstType=xml

Once XML response (string) is returned it could be parsed with SimpleXMLElement class as demonstrated below:

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

$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 . "
";
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐