PHP ::获取POST请求内容

时间:2015-12-19 14:06:52

标签: php http request http-post

我正在使用WebClient.UploadData()方法(C#)向我的网络服务器发送POST请求。发送到我的网络服务器的数据包如下所示:

POST / HTTP/1.1
Host: {ip}
Content-Length: {length}
Expect: 100-continue
Connection: Keep-Alive


{buffer_content}

由于{buffer_content}在$ _POST数组中没有分配,我有以下问题......

问题:如何使用PHP阅读{buffer_content}?

我偶然发现 file_get_contents('php:// input'),但我不确定是否建议这样做。

1 个答案:

答案 0 :(得分:4)

使用php://input信息流:

$requestBody = file_get_contents('php://input');

这是推荐的方法,在PHP 7.0中,这是唯一的方法。以前,有时会有一个名为$HTTP_RAW_POST_DATA的全局变量,但它是否存在将取决于INI设置,并且创建它会损害性能。该变量已被弃用并删除。

请注意,在PHP 5.6之前,您只能阅读php://input一次,因此请确保将其存储。

一旦你拥有了你的身体,你就可以从JSON或其他任何东西解码它,如果你需要的话:

$requestBody = json_decode($requestBody) or die("Could not decode JSON");