2015-12-19 86 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"); 
相關問題