2012-07-10 84 views
1

自從大約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); 
} 

我想知道,如果有什麼不對的地方,因爲另一臺主機上它的工作原理每次和與它的主機上,它僅適用於一半的網站我嘗試。

+0

嘗試'curl_error'和'curl_info'代碼,以檢查是否u得到任何錯誤。 – Vimalnath 2012-07-10 18:15:14

+0

您應該檢查支付網關側的訪問控制是否已更改。 – user1498339 2012-07-10 18:17:08

回答

1

很難在不知道實際URL的情況下給出有效的回覆。

一個問題可能是URL重定向,例如有些人將domain.com重定向到www.domain.com。

對於您可以使用的場景。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

請運行以下命令以獲取有關發生的更多信息。

print_r(curl_info($ch)); 

擺正以下curl_exec

+1

curl_getinfo返回 數組([url] => https://orbital1.paymentech.net/authorize [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => 0 [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0]在exec之前返回的curl_error什麼也沒有返回,並且在couldn'返回之後,curl_error返回0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => t連接到主機 – 2012-07-10 19:31:34

+0

您是否在curl_exec之後運行了curl_info? – arosolino 2012-07-10 22:48:31

相關問題