我正在调用的 api 返回一个包含 HTTP 代码 400 的验证错误的 json 对象。我使用 PHP 的 curl 库实现了客户端,但在错误时 curl_exec
返回 false。如何获取错误的响应正文?
请注意,我正在设置 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
最佳答案
您可以取消设置一次 CURLOPT_FAILONERROR
。并按预期将错误状态代码添加到 CURLOPT_HTTP200ALIASES
也可能有所帮助。
curl_setopt($conn, CURLOPT_FAILONERROR, false);
curl_setopt($conn, CURLOPT_HTTP200ALIASES, (array)400);
(libcurl 也有一个 CURLOPT_ERRORBUFFER
,但您不能在 PHP 中使用该选项。)
顺便说一句,在出现 4xx 错误的情况下,curl 的行为是正确的,不会返回响应主体。不确定是否可以覆盖。所以你可能必须迁移到 PEAR HTTP_Request2
或类似的 HTTP 请求类,您可以在其中偏离标准。
关于php - 使用 PHP curl 如何获取 400 响应的响应主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6363916/