使用PHP 讀取JSON POST
在此查詢中,使用者在擷取POST 值並從轉換為使用基於JSON 的內容類型後的Web 服務。出現了以下問題:
問題:
當內容類型為 application/json 時,檢索 POST 值的適當方法是什麼?
答案:
傳統的 PHP 超全域變量,例如當內容類型為 application/json 時,$_POST 將不包含所需的資料。要存取原始 POST 數據,需要從不同的來源讀取。
解決方案:
利用 PHP 的 file_get_contents() 函數檢索原始 POST 輸入然後使用 json_decode() 解析它。這種方法可以存取關聯數組中的資料。
其他注意事項:
使用者的測試程式碼也需要修改。 CURLOPT_POSTFIELDS 應該用於將請求正文設為 JSON 字串,而不是嘗試將其編碼為 application/x-www-form-urlencoded。
更新了用於測試的 PHP 程式碼:
$data_string = json_encode($data); $curl = curl_init('http://webservice.local/'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($curl); $result = json_decode($result); var_dump($result);
更新了 Web 的 PHP 程式碼服務:
header('Content-type: application/json'); // Remove duplicate line // header('Content-type: application/json'); // Remaining code...更新了 Web 的 PHP 程式碼服務:
以上是如何在 PHP 中使用「application/json」內容類型擷取 POST 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!