我正在使用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'),但我不确定是否建议这样做。
答案 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");