ホームページ >バックエンド開発 >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 エンコードされた配列を返す際に問題が発生しました。 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。