2015-12-19 63 views
1

我使用WebClient.UploadData()方法(C#)向我的网络服务器发送POST请求。发送到我的web服务器的数据包看起来像这样:PHP ::获取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

没有什么错用php://输入。它是请求的原始未解析的主体,有时也是最好的选择(例如,如果主体不是一组键 - 值对)。但是,请记住,该流只读取一次,直到php 5.6。 – Rangad

+1

你有没有试过'var_dump($ _ POST);'? –

+0

POST请求的状态码是什么? – EricLavault

回答

3

使用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"); 
相关问题