11

我将 PHP 与 Amazon Payments 网络服务一起使用。我的一些请求有问题。亚马逊应该返回一个错误,但是它的处理方式给我带来了问题。

Amazon 返回带有错误消息的 XML 数据,但它也会抛出 HTTP 400(有时甚至是 404)。这使得 file_get_contents() 立即抛出错误,我无法获取内容。我也尝试过使用 cURL,但从来没有得到它给我回复。

我真的需要一种方法来获取返回的 XML,而不管 HTTP 状态代码如何。它有一个重要的“消息”元素,可以为我提供有关我的计费请求失败原因的线索。

有没有人有一个 cURL 示例或其他允许我这样做的?我所有的请求目前都使用 file_get_contents() 但我不反对更改它们。其他人似乎都认为 cURL 是“正确”的方式。

4

2 回答 2

19

您必须使用ignore_errors选项定义自定义流上下文(函数 file_get_contents 的第三个参数)。

于 2010-09-14T15:09:54.383 回答
18

作为 DoubleThink 帖子的后续,这里是一个工作示例:

$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);
于 2010-09-14T15:48:33.703 回答