cURL を使用した PHP への JSON の投稿: データ解釈に関する問題
リセス PHP フレームワーク内で cURL POST コマンドを実行しようとした場合、ユーザーは投稿されたデータを解釈する際に問題が発生しました。具体的には、POST パラメータ -d が期待どおりに認識されず、空の配列が生成されました。
問題ステートメント
ユーザーが cURL コマンドを使用しようとしました:
curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
Windows (PHP 5.2) と Linux (同じ PHP バージョン) の両方でコマンドを実行したにもかかわらず、 POST データが正しく解釈されませんでした。以下に示すように、サーバーの応答は空の「スクリーンキャスト」配列を示しました。
{"screencast":{"id":null,"subject":null,"body":null, "dataUrl":null,"dataMedium":null,"createdOn":null,"author":null}}
解決策
この問題は、-d パラメータで指定されているという cURL のデフォルトの仮定に起因しています。フォームエンコードされたデータ。これを解決するには、-H パラメータを使用して Content-Type を JSON として指定する必要があります。
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
この変更により、cURL はポストされた JSON データを正しく解釈し、POST 操作が成功しました。
以上がcURL POST JSON データが PHP で空として解釈されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。