Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法通过cURL获取XML输出_Php_Xml_Curl - Fatal编程技术网

Php 无法通过cURL获取XML输出

Php 无法通过cURL获取XML输出,php,xml,curl,Php,Xml,Curl,我正在使用PHP cURL从URL获取XML输出。下面是我的代码的样子: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.mydomain.com?querystring'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_

我正在使用PHP cURL从URL获取XML输出。下面是我的代码的样子:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.mydomain.com?querystring'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
$store = curl_exec($ch);
echo $store;
curl_close($ch);
但是,它没有返回XML,而是显示了404错误页面。如果我在web浏览器中键入URL,我可以在浏览器中看到XML

我错过了什么(


谢谢。

一些网站所有者检查某些东西是否存在,以确保请求来自web浏览器,而不是机器人(或cURL)。您应该尝试添加
cURL\u setopt($ch,CURLOPT\u USERAGENT,'Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0'))
并查看这是否解决了问题。这将发送一个用户代理字符串。该站点还可能检查是否存在cookie或其他内容


要在网页中输出XML,您需要使用。您可能还需要将其包装在HTML
元素中。

PHP脚本是否与浏览器在同一台机器上运行?仅仅因为url在一个位置工作,就完全不意味着它在另一台机器上运行得如何。@Blueboye-除了@Marc B的注释,一些网站所有者检查是否存在某些东西,以确保请求来自web浏览器而不是bot(或cURL)。您应该尝试添加
cURL_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0)'
然后看看这是否解决了问题。这将发送一个用户代理字符串。该站点还可能检查Cookie或其他东西的存在。我正在本地主机上运行PHP,但ULR是一个外部服务器。@Francois:哇!成功了,不过现在我在屏幕上看到了XML节点数据。它不是XML。我如何使它显示为XML。我的另一个问题是处理此类XML响应的最佳方式是什么?我应该将其存储在XML文件中然后执行操作,还是可以直接对响应执行XML操作?可能重复:;太好了。非常感谢您的快速帮助。关于我的第二个问题,您有什么想法:我需要将此输出保存到XML文件中吗o读取XML节点,还是不保存也可以?这不是更好的参考吗?事实上,在以完全不同的编码将XML输出为HTML之前,编码应该反映出来。@Blueboy,您可以不保存就可以。使用DomDocument,处理文件和字符串。@Blueboye-如果您想在PHP中读取XML,请查看(如)。无需保存。您基本上需要执行
$xml=simplexml\u load\u string(curl\u exec($ch));
。如果您希望
将整个xml回显到屏幕上(以便您可以看到它),您需要使用
htmlentities()
,正如我在回答中所说的,因为浏览器无法正确显示它。