php 读取远程xml报错


用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;

3.浏览器地址栏直接请求返回的xml

请输入图片描述

php

泄漏的甲烷 11 years, 5 months ago
   
  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);

Miwako answered 11 years, 5 months ago

Your Answer