如何从400状态php请求获取响应正文

时间:2018-01-16 13:38:05

标签: php

我知道我可以使用cURL,但我正在服务器上,我不允许使用cURL。

所以我的问题是:我使用information_schema.columns来获取返回状态var ds = loopback.createDataSource({ connector: require('loopback-component-storage'), provider: 'filesystem', root: 'server/files' }); var storage = ds.createModel('storage'); app.model(storage); 的请求的响应正文。使用file_get_contents我可以得到响应的标题,但由于某些原因,PHP没有显示RESPONSE BODY!

当它返回400状态时,$http_response_header会返回respose正文,但是如果状态为200,则表示不会返回响应正文。我该如何检索?

1 个答案:

答案 0 :(得分:1)

4xx HTTP status codes表示“客户端错误”。

更具体地说,400 status code的含义是“错误请求”。这意味着HTTP请求格式错误,服务器(或处理它的服务器端脚本)不理解它。

file_get_contents()的文档解释了:

  

该函数返回读取数据或失败时FALSE

状态代码不同于200是失败的。

有一种方法可以在错误中获取请求的正文而不是FALSE。您所要做的就是创建stream context,将其配置为ignore the HTTP errors并将其作为第三个参数传递给file_get_contents()

$url = 'http://localhost/';

$options = array(
    'http' => array(
        'ignore_errors' => true,
    ),
);
$context = stream_context_create($options);

$data = file_get_contents($url, false, $context);

$data现在包含响应的正文,但您必须解析$http_response_header[0]以了解请求是否成功。

无论如何,状态代码400表示发出请求的代码中的错误;你应该修复请求(可能你提交了一个正文)。