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