首頁 >後端開發 >php教程 >如何在 PHP 中使用「application/json」內容類型擷取 POST 值?

如何在 PHP 中使用「application/json」內容類型擷取 POST 值?

Linda Hamilton
Linda Hamilton原創
2024-12-23 15:53:15406瀏覽

How to Retrieve POST Values with `application/json` Content Type in PHP?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn