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."}]}

現在、返されたこのエラー メッセージを読み取ることができません。代わりに、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 は正しい方法ですか、それとも他の方法を使用する必要がありますか?

4

1 に答える 1

-1

あなたは見るべきですcurl_error

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

于 2012-10-03T12:32:02.653 に答える