可能重复:
Using PHP curl how does one get the response body for a 400 response
使用PHP的curl_exec调用RESTful API时,文档说http://php.net/manual/en/function.curl-exec.php
成功时返回TRUE,失败时返回FALSE。但是,如果 设置CURLOPT_RETURNTRANSFER选项后,它将返回结果 成功,失败就错了。
当curl_exec失败时,返回false。但是,远程服务器可能已尝试返回有用的消息以使用该错误。我们如何使用curl_exec访问此消息,只是它返回false?
例如,远程API可能会返回此消息和HTTP 400状态代码:
{"Items":[{"Field":"FirstName","Description":"FirstName is required and cannot be null."}]}
目前我无法读取已返回的此错误消息,而是我得到的所有内容均为false。我也看过curl_info。我确实已经设置了返回传输。
在C#中,我会使用exception.Response.GetResponseStream
方法并写:
private static string Post(WebClient client, string uri, string postData)
{
string response = string.Empty;
try
{
response = client.UploadString(uri, "POST", postData);
}
catch (WebException ex)
{
var stream = ex.Response.GetResponseStream(); // here
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
response = reader.ReadToEnd();
}
}
}
return response;
}
如何在PHP中完成? curl_exec是正确的方法还是我应该使用别的东西?