POST
Play フレームワークのアクション メソッドに大きなボディのリクエストを発行するとnull
、データを抽出するときに取得します。本体がかなり小さい場合は、問題なくデータを取得できます。
サンプルの短いデータ セットを次に示します。
{
"creator": "zoltan",
"sport": "hike",
"geometry": [
{
"time": "2009-07-10 12:56:10 +0000",
"x": 10.275514,
"y": 47.514749,
"z": 756.587
},
{
"time": "2009-07-10 12:56:19 +0000",
"x": 10.275563,
"y": 47.514797,
"z": 757.417
}
]
}
POST
本文にこの JSON を含むリクエストを発行すると、すべて正常に動作します。geometry
ただし、配列にさらに多く (〜 4000) のポイントを追加するnull
と、アクションが発生します。
これが私のアクションメソッドです:
@Transactional
//@BodyParser.Of(Json.class) // tried with this as well
public static Result createTour() {
LOG.debug("Raw request body: " + request().body().asText());
JsonNode node = request().body().asJson();
LOG.debug("JSON request body: " + node);
TourDto tourDto;
try {
tourDto = jsonToTour(node);
int id = TourDataAccessUtils.create(tourDto);
return created(toJson(id));
} catch (JsonProcessingException e) {
LOG.error("While parsing JSON request.", e);
return Results.badRequest(
toJson(Throwables.getRootCause(e).getMessage()));
}
}
Chrome で高度な REST クライアントを使用しċurl
てリクエストを送信しようとしましたが、どちらも失敗しました。
何が問題なのですか?Content-Lenght
大規模なリクエストにヘッダーを含める必要があるのでしょうか? もしそうなら、どうすれば任意の JSON データに対して手動で計算できますか?