エンドポイントにデータを送信しようとしましたが、データサイズが大きすぎると表示されたため、メソッドをPOSTに変更し、エラーを受け取りました:
This API does not support parsing form-encoded input.
次に、タイプをapplication/jsonに変更しましたが、まだpostがあり、次のようになっています。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
大量のデータ、つまり2730バイトをエンドポイントに送信し、それを適切に処理させるための最良の方法は何ですか?私の場合、問題のフィールドはテキストタイプです。これは、AppEngineが文字列に保持するための500文字の制限を超えているためです。
また、多くのことと同様に、これは私のローカルマシンでうまく機能し、ライブアプリエンジンインスタンスでのみこのエラーが発生します。
ありがとう!
問題が関連しているかどうかはわかりませんが、「このAPIはフォームでエンコードされた入力の解析をサポートしていません」というメッセージを受け取りました。 curlを使用してPOSTメッセージを次のように送信しようとしたときにエラーが発生しました:
curl -X POST -d '{"name": "Foo"}' http://foo.appspot.com/_ah/api/foo/1/endpoint
問題は、コンテンツタイプを設定していなかったことです。コマンドラインで指定されていない場合は、Content-Type:application/x-www-form-urlencodedを使用してPOSTをカールします。 Google Cloudエンドポイントは、このコンテンツタイプを受け入れません。
コンテンツタイプを含めるようにcurl呼び出しを変更すると、次のように機能しました。
curl -X POST -d '{"name": "Foo"}' --header "Content-Type: application/json" http://foo.appspot.com/_ah/api/foo/1/endpoint