自从大约5年以来,我一直在使用curl从支付网关获取xml响应,自上一年一月之后,另一个使用相同的代码。上个星期五它停止工作,代码没有被修改,主机和支付网关都告诉我没有任何改变。CURL不会在某些主机的某些网站上返回任何内容
我已经完成了多个测试,以便通过curl,fopen和file_get_contents来访问该URL来尝试使其工作。我似乎能够访问常见的网站,如谷歌,Facebook和php.net,但不是我想要的网站和我工作的其他网站。
我用于测试的代码是:
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1); // comment once in production
if(!curl_setopt($ch, CURLOPT_URL, $url)) {echo 'CURLOPT URL Error<p>';}
if(!curl_setopt($ch, CURLOPT_HEADER, 1)) {echo 'CURLOPT Header Error<p>';}
if(!curl_setopt($ch, CURLOPT_HTTPHEADER, array('POST /AUTHORIZE HTTP/1.0', 'MIME-Version: 1.0', 'Content-type: application/PTI21',
'Content-transfer-encoding: text', 'Request-number: 1', 'Document-type: Request'))) {echo 'CURLOPT HTTPHEADER Error<p>';}
if(!curl_setopt($ch, CURLOPT_TIMEOUT, 90)) {echo 'CURLOPT TIMEOUT Error<p>';}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // gives error, but keeps xml formatting
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;
$options = array(
'return_info' => true,
'method' => 'post'
);
$result = file_get_contents($url);
print_r($result);
$fd = fopen($url, "r");
if(!$fd)
{
echo "Cannot open URL";
} else {
while (!feof($fd)) {
$buffer = fgets($fd, 4096);
echo $buffer;
}
fclose ($fd);
}
我想知道,如果有什么不对的地方,因为另一台主机上它的工作原理每次和与它的主机上,它仅适用于一半的网站我尝试。
尝试'curl_error'和'curl_info'代码,以检查是否u得到任何错误。 – Vimalnath 2012-07-10 18:15:14
您应该检查支付网关侧的访问控制是否已更改。 – user1498339 2012-07-10 18:17:08