6

可能重复:
使用 PHP curl 如何获得 400 响应的响应正文

当使用 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 是正确的方法还是应该使用其他方法?

4

1 回答 1

-1

你应该看看curl_error

http://www.php.net/manual/en/function.curl-error.php

于 2012-10-03T12:32:02.653 回答