0

何かのために超シンプルな API をセットアップしただけですが、質問があります。私はAPIを呼び出していますが、それは完全に機能しますが、返されるヘッダーステータスコードについて疑問に思っています.

すべてのエラーで、エラーを 500 に設定します。

header('HTTP 1.1 500 invalid signature');

気になる記述です。CuRL を使用してそのテキストを取得する方法はありますか? テキストではなく、コードを問題なく取得できます。

または、誰かが500のステータスをスローし、どのエラーが発生したかを示すことができる文字列をapiファイルに戻す簡単な方法を推奨できますか?

4

2 に答える 2

1

私があなただったら、ステータス メッセージに他のカスタム ヘッダーを使用します。

header('HTTP/1.1 500 Internal Server Error');
header('My-Super-Custom-Error-Msg: invalid signature');
于 2013-02-14T20:20:31.927 に答える
1

オプションを設定すると、cURL はヘッダーを含む完全な応答を返しCURLOPT_HEADERます。ヘッダーとコンテンツは 2 つの CRLF で区切られています。ヘッダー自体は CRLF を使用して分離されます。この情報は、応答からステータス ヘッダーを解析するのに十分なはずです。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://localhost/err-500.php");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = curl_exec($ch);

list($header, $body) = explode("\r\n\r\n", $data, 2);
$header = explode("\r\n", $header);

echo $header[0];

出力:

HTTP/1.1 500 Internal Server Error

エラーをスローしたい場合は、スクリプトで500応答ステータスとカスタム ヘッダーを 1 行のコードで出力できます。

または、header()関数を使用して応答コードを設定できます。

header("X-Error-Message: Invalid Signature", true, 500);

PHP は、ステータス行の1.1Internal Server Errorの部分を埋めます。

HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.3.19
X-Powered-By: ASP.NET
X-Error-Message: Invalid Signature
Date: Thu, 14 Feb 2013 21:11:00 GMT
Content-Length: 100
于 2013-02-14T20:51:33.920 に答える