1. 程式人生 > >PHP無法獲得curl post 提交的json資料

PHP無法獲得curl post 提交的json資料

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