当使用 PHP 的 curl_exec 调用 RESTful API 时,文档说http://php.net/manual/en/function.curl-exec.php
成功时返回 TRUE,失败时返回 FALSE。但是,如果设置了 CURLOPT_RETURNTRANSFER 选项,它将在成功时返回结果,在失败时返回 FALSE。
当 curl_exec 失败时,它返回 false。但是,远程服务器可能已尝试返回有用的消息来解决该错误。当它只返回 false 时,我们如何使用 curl_exec 访问此消息?
例如,远程 API 可能会返回此消息和 HTTP 400 状态代码:
{"Items":[{"Field":"FirstName","Description":"FirstName is required and cannot be null."}]}
目前我无法阅读已返回的此错误消息,而是我得到的都是错误的。我也看过 curl_info 。我确实设置了returntransfer。
在 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 是正确的方法还是应该使用其他方法?