PHP-php 读取远程xml报错

发布于 2017-01-04 02:40:01 字数 536 浏览 1244 评论 4

用php读取支付宝返回的xml,用来处理发货的相关信息。
用dom的load()和simplexml_load_file()方法都报错,找不到实体文件,但是在浏览器地址栏直接访问可以返回正确的xml。不知道哪里出了问题。

1.请求的url

请输入图片描述

2.php代码

$doc = new DOMDocument();
$doc->load($url);

//获取成功标识is_success
$itemIs_success= $doc->getElementsByTagName( "is_success" );
$nodeIs_success[$ls] = $itemIs_success->item(0)->nodeValue;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-08-23 04:51:14

你的url对应的不是一个xml文件,所以你load时会告诉没有实体。
浏览器中可以用是因为请求这个url后返回的是xml文件,浏览器只是把这个请求输出。
你可以用curl或者file_get_content请求后,把内容存储到文件中,然后再用load方法操作。

归属感 2017-05-25 15:48:01

function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {

if (trim($input_charset) != '') {
$url = $url."_input_charset=".$input_charset;
}
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
curl_setopt($curl,CURLOPT_POST,true); // post传输数据
curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post传输数据
$responseText = curl_exec($curl);

curl_close($curl);

return $responseText;
}
$html_text = getHttpResponsePOST($url, $cacert_url, $para, $input_charset );
$doc = new DOMDocument();
$doc->loadXML($html_text);
if ($doc->getElementsByTagName ( "is_success" )->item ( 0 )->nodeValue == 'T') {
...
}

上面是我用的支付宝同步发货的方法,用的是$doc->loadXML($html_text);

虐人心 2017-05-10 05:55:49

我也在做用php读取支付宝返回的xml,遇到了和你一样的问题,现在已经解决了。
不知道您有没有注意到接口文档里面有这样一句话,“(7) 本地电脑或商户服务器的配置上需支持XML远程解析,如:需要支持SSL;”。
我的环境就没有支持ssl的扩展,后来下载了libeay32.dll,ssleay32.dll,再修改一下php.ini,使服务器环境支持了ssl。再运行程序的时候就不提示错误了。

灵芸 2017-04-20 00:52:13

首先这个问题可以分为2个方面:
1、读取远程内容
2、读取内容后,解析内容

浏览器能取到远程内容,不代表loadcurlfile_get_content能取到远程内容,首先要保证通过程序取到的内容和浏览器获取的内容一致,然后考虑2的问题。

至于2的问题,任何一个解析器都不会仅仅一种方式方式输入的。如果已经排除了1的问题,那么就是一个解析的问题,就好处理的多。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文