ホームページ >バックエンド開発 >PHPチュートリアル >PHP で JSON POST データを正しく読み取るにはどうすればよいですか?

PHP で JSON POST データを正しく読み取るにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-16 19:39:15937ブラウズ

How Can I Properly Read JSON POST Data in PHP?

PHP を使用した JSON POST の読み取り

JSON 形式のデータをポストする必要がある Web サービスを操作する場合、PHP で POST 値を正しく処理することが重要です。この記事では、JSON POST データを効果的に読み取り、解析する手順について説明します。

問題: アプリケーション/JSON コンテンツ タイプの空の $_POST 値

空の $ に関する問題が発生している場合Content-Type として application/json を指定しているにもかかわらず、_POST 値が表示されない場合は、post 値をフィルタリングする方法が原因である可能性があります。この場合、従来の $_POST 変数は JSON 形式のデータの読み取りには適していません。

解決策: file_get_contents('php://input') を使用して JSON を読み取る

生のデータにアクセスするにはJSON POST データの場合は、file_get_contents('php://input') を使用する必要があります。この関数は、現在のスクリプトの入力ストリームを読み取り、生の HTTP リクエスト本文を返します。

受信側で更新された PHP コード:

$json = file_get_contents('php://input');
$obj = json_decode($json);

POST データの処理テスト中に正しく行う

Web サービスをテストするときは、POST データが正しい形式で送信されていることを確認することが重要です。テスト コード内:

  • json_encode($data) を使用してデータを JSON 文字列に変換します。
  • HTTP ヘッダーで Content-Type を application/json として指定します。

更新されたテスト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') が 1 回だけ呼び出されることを確認してください。

以上がPHP で JSON POST データを正しく読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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