JSON 形式のデータをポストする必要がある Web サービスを操作する場合、PHP で POST 値を正しく処理することが重要です。この記事では、JSON POST データを効果的に読み取り、解析する手順について説明します。
空の $ に関する問題が発生している場合Content-Type として application/json を指定しているにもかかわらず、_POST 値が表示されない場合は、post 値をフィルタリングする方法が原因である可能性があります。この場合、従来の $_POST 変数は JSON 形式のデータの読み取りには適していません。
生のデータにアクセスするにはJSON POST データの場合は、file_get_contents('php://input') を使用する必要があります。この関数は、現在のスクリプトの入力ストリームを読み取り、生の HTTP リクエスト本文を返します。
受信側で更新された PHP コード:
$json = file_get_contents('php://input'); $obj = json_decode($json);
Web サービスをテストするときは、POST データが正しい形式で送信されていることを確認することが重要です。テスト コード内:
更新されたテスト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 サイトの他の関連記事を参照してください。