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 は正しい方法ですか、それとも他の方法を使用する必要がありますか?