PHP 获取 HTTP 400 响应的内容
Posted
技术标签:
【中文标题】PHP 获取 HTTP 400 响应的内容【英文标题】:PHP Get Content of HTTP 400 Response 【发布时间】:2011-04-12 05:29:18 【问题描述】:我将 php 与 Amazon Payments 网络服务一起使用。我的一些请求有问题。亚马逊应该返回一个错误,但是它的处理方式给我带来了问题。
Amazon 返回带有错误消息的 XML 数据,但它也会抛出 HTTP 400(有时甚至是 404)。这使得 file_get_contents() 立即抛出错误,我无法获取内容。我也尝试过使用 cURL,但从来没有得到回复。
我真的需要一种方法来获取返回的 XML,而不管 HTTP 状态代码如何。它有一个重要的“消息”元素,可以为我提供有关我的计费请求失败原因的线索。
是否有人有 cURL 示例或其他允许我这样做的示例?我所有的请求目前都使用 file_get_contents() 但我不反对更改它们。其他人似乎都认为 cURL 是“正确”的方式。
【问题讨论】:
【参考方案1】:您必须使用 ignore_errors 选项定义自定义流上下文(函数 file_get_contents 的第三个参数)。
【讨论】:
啊!它是如此简单,它的工作原理!谢谢您的帮助。如果不是那么晦涩,我本可以弄清楚的。【参考方案2】:作为 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);
【讨论】:
以上是关于PHP 获取 HTTP 400 响应的内容的主要内容,如果未能解决你的问题,请参考以下文章
在 pyspark 中使用 S3a 保存文件时获取 S3 响应代码(仅限 HTTP 代码,如 200,300,400,403,500 等)
尝试从 Azure AD 获取访问令牌时获取响应代码 400
Retrofit 2.0 - 如何获取 400 Bad Request 错误的响应正文?