在play框架java中检索POST请求中发送的请求正文字符串

时间:2014-04-12 19:04:05

标签: java post playframework playframework-2.0

我在Java中使用play框架。 我想检索在POST请求中发送到播放服务器的整个请求主体。我怎样才能找回它?

4 个答案:

答案 0 :(得分:13)

使用Play Framework 2.3,即使是Content-Type标题是application / json

,也可以获得原始的json文本。
DisplayAlert

答案 1 :(得分:12)

看一下play.mvc.Http课程,你有一些选择(取决于数据格式),即

RequestBody body = request().body();
MultipartFormData formData = request().body().asMultipartFormData();
Map<String, String[]> params = request().body().asFormUrlEncoded();
JsonNode json = request().body().asJson();
String bodyText = request().body().asText();

您可以测试request().body().asText(),即使用命令行中的cUrl:

curl  -H "Content-Type: text/plain" -d  'Hello world !' http://domain.com/your-post-action

...或使用某些工具,例如浏览器插件:https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

答案 2 :(得分:3)

如果您在请求中调用以下代码;

String bodyText = request().body().asText();
如果Content-Type标头是application / json

bodyText将为null

如果Content-Type标头是application / json而没有先转换为JsonNode,则无法使用提供的控制器API获取JSON文本

因此,如果application / json是您的Content-Type标头,那么最好的方法是

String bodyText = request().body().asJSON().toString();

这是一个失败的游戏框架,因为无论Content-Type标头是什么,它们应该只有一个方法来将请求体作为String。

答案 3 :(得分:0)

它会将请求JSON正文作为字符串。我在播放2.6.x上测试了它 val body = request.body.asJson.get.toString()