使用PHP curl如何获得400响应的响应主体

时间:2011-06-15 20:27:11

标签: php curl

我正在调用的api使用HTTP代码400返回验证错误的json对象。我使用PHP的curl库实现了客户端,但是错误curl_exec返回false。如何在错误时获得响应正文?

请注意,我正在设置curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

3 个答案:

答案 0 :(得分:20)

您可以取消CURLOPT_FAILONERROR一次。将错误状态代码按预期添加到CURLOPT_HTTP200ALIASES也可能会有所帮助。

 curl_setopt($conn, CURLOPT_FAILONERROR, false);
 curl_setopt($conn, CURLOPT_HTTP200ALIASES, (array)400);

(libcurl也有CURLOPT_ERRORBUFFER,但你不能在PHP中使用该选项。)

顺便说一下,curl在4xx错误的情况下不返回响应体就行为正常。不确定是否可以覆盖。因此,您可能必须迁移到PEAR HTTP_Request2或类似的HTTP请求类,您可以偏离标准。

答案 1 :(得分:7)

我能够通过将FAILONERROR设置为false来获取400响应的内容,而不必将400作为正常的200响应别名。

答案 2 :(得分:4)

添加:

curl_setopt($ch, CURLOPT_HTTP200ALIASES, array(400));