只是设置一个超级简单的API,但我有一个问题。 我正在调用api,它运行正常,但我想知道正在返回的头状态代码。
在所有错误上,我想将错误设置为500:
header('HTTP 1.1 500 invalid signature');
这是我很好奇的描述。有没有办法使用CuRL获取该文本? 我可以得到代码没有问题,而不是文本。
或者某人可以推荐并更简单地将状态设置为500,并将字符串传递回api文件,以显示发生了什么错误?
答案 0 :(得分:1)
如果我是你,我会使用其他一些自定义标题来显示状态消息:
header('HTTP/1.1 500 Internal Server Error');
header('My-Super-Custom-Error-Msg: invalid signature');
答案 1 :(得分:1)
cURL会在您设置CURLOPT_HEADER
选项时返回包含标题的完整响应。标题和内容由两个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.1
和Internal 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