PHP無法獲得curl post 提交的json資料
阿新 • • 發佈:2019-01-31
1.編寫專案將資料轉換成json格式的字串,並通過CURL post的形式傳遞給服務端,但是在服務端無法用$_post獲取到資料。
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://test.com/Demo1.php'); //curl可以直接 curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_HTTPHEADER,array("Content-type: application/json;charset='utf-8'")); //設定響應頭 curl_setopt($curl,CURLOPT_POST,1); $data = json_encode(array('name'=>'stephen','age'=>30)); curl_setopt($curl,CURLOPT_POSTFIELDS,$data); $data = curl_exec($curl); curl_close($curl);
其種修改了http請求頭資訊
curl_setopt($curl,CURLOPT_HTTPHEADER,array("Content-type: application/json;charset='utf-8'")); //設定響應頭
後臺用$_POST獲取到的資訊為空,但是可以通過$post = file_get_contents("php://input");獲取到請求的相關資訊。
var_dump($_POST);//無法拿到請求資料
$post = file_get_contents("php://input");//拿到請求資料
var_dump($post);
原因:
Coentent-Type的值為application/x-www-data-urlencode和multipart/form-data時,php才會將http請求資料包中的資料填進$_POST