使用需要發布 JSON 格式資料的 Web 服務時,正確處理 PHP 中的 POST 值至關重要。本文將引導您完成有效讀取和解析 JSON POST 資料的步驟。
如果您遇到空$ 問題儘管指定application/json 作為Content-Type,但_POST 值很可能是由於您過濾post 值的方式所致。在這種情況下,常規的 $_POST 變數不適合讀取 JSON 格式的資料。
存取原始資料JSON POST 數據,需要使用 file_get_contents('php://input')。此函數讀取目前腳本的輸入流並傳回原始 HTTP 請求正文。
更新了接收端的PHP 代碼:
$json = file_get_contents('php://input'); $obj = json_decode($json);
測試Web 服務時,確保POST 資料以正確的格式發送至關重要。在您的測試程式碼中:
更新測試code:
$data_string = json_encode($data); $ch = curl_init('http://webservice.local/'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($ch); $result = json_decode($result);
確保header('Content-type: application/json ') 在接收端僅呼叫一次。
以上是如何在PHP中正確讀取JSON POST資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!