PHP學習筆記之Post上傳注意事項

        今天原本是想用Postman 模擬POST 上傳一組Json 數據到服務器,結果發現上傳的數據服務器始終接受不到。

服務器代碼:

<?php
	echo "<pre>";
	var_dump($_POST);
	var_dump($_REQUEST);
	echo "</pre>";
?>

PostMan code:

POST /api.php/API/fish_woter_monitoring_add HTTP/1.1
Host: shrimp.cqjufy.com
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 356cd424-c710-2d33-ffa7-29157f939c56


{"SensorData": [{"equipment_ID": "20180418","PH_value": "7.28","oxygen_value": "5.03","temperature_value": "21.4"}]}

結果發現服務器始終接收不到數據。

百度後 各位大神們都是推薦使用 php://input 讀取

file_get_contents('php://input')

另外還可以使用 $GLOBALS['HTTP_RAW_POST_DATA'] 獲取POST 原生數據,不過官方建議用php://input 代替;

$GLOBALS['HTTP_RAW_POST_DATA']

三者的區別:

$_POST 、$HTTP_RAW_POST_DATA、php://input三者之間的區別

HTTP_RAW_POST_DATA 

1.需要設置 php.ini 中的 always_populate_raw_post_data 值爲 On 纔會生效

2.相比php://input 需要更多的內存

php://input

不能用於 enctype="multipart/form-data"

$_POST

1.無法解析如text/xml,application/json等非 application/x-www.form-urlencoded 數據類型的內容

2.經驗證不能用於enctype="text/plain"   

3.當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencodedmultipart/form-data 時,會將變量以關聯數組形式傳入當前腳本。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章