2010-09-14 114 views
8

我正在使用PHP與Amazon Payments Web服務。我的一些要求存在問題。亞馬遜正在返回一個錯誤,但它的方式給我帶來了問題。PHP獲取HTTP 400響應的內容

Amazon以一條有關錯誤的消息返回XML數據,但它也會拋出一個HTTP 400(有時甚至是404)。這使得file_get_contents()立即拋出錯誤,我無法獲取內容。我也嘗試過使用cURL,但從來沒有讓它給我回應。

我真的需要一種方法來獲取無論HTTP狀態碼的XML返回。它有一個重要的「信息」元素,爲我提供了有關我的結算請求失敗原因的線索。

有沒有人有cURL的例子,否則,將允許我這樣做?我所有的請求都使用file_get_contents(),但我不反對改變它們。其他人似乎認爲cURL是「正確」的方式。

回答

16

您必須使用ignore_errors選項來定義自定義流上下文(函數file_get_contents的第三個參數)。

+0

啊!這很簡單,它的工作原理!謝謝您的幫助。如果它不那麼模糊,我本可以想出來。 – jocull 2010-09-14 15:46:06

15

作爲後續雙重思想的帖子,這裏是一個工作示例:

$url = 'http://whatever.com'; 

//Set stream options 
$opts = array(
    'http' => array('ignore_errors' => true) 
); 

//Create the stream context 
$context = stream_context_create($opts); 

//Open the file using the defined context 
$file = file_get_contents($url, false, $context);