ホームページ >バックエンド開発 >PHPチュートリアル >PHP で `application/json` コンテンツ タイプを使用して POST 値を取得する方法
PHP を使用した JSON POST の読み取り
この問い合わせでは、ユーザーは POST 値を抽出し、ファイルから JSON エンコードされた配列を返す際に問題が発生しました。 JSON ベースのコンテンツ タイプの使用に移行した後の Web サービス。次の質問が生じました:
質問:
コンテンツ タイプが application/json の場合に POST 値を取得する適切な方法は何ですか?
答え:
$_POST などの従来の PHP スーパーグローバルコンテンツ タイプが application/json の場合、必要なデータは含まれません。生の POST データにアクセスするには、別のソースから読み取る必要があります。
解決策:
PHP の file_get_contents() 関数を利用して生の POST 入力を取得し、次に、json_decode() を使用して解析します。このアプローチにより、連想配列内のデータにアクセスできるようになります。
追加の考慮事項:
ユーザーのテスト コードも変更する必要があります。リクエスト本文を application/x-www-form-urlencoded としてエンコードしようとするのではなく、CURLOPT_POSTFIELDS を使用して JSON 文字列として設定する必要があります。
テスト用に更新された 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...
以上がPHP で `application/json` コンテンツ タイプを使用して POST 値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。