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

CURLOPT_HEADER当您设置选项时,cURL 返回完整的响应,包括标题。header 和 content 用两个 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响应状态以及带有一行代码的自定义标头:

或者您可以使用该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 回答