2010-09-14 104 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);