我在Java中使用play框架。 我想检索在POST请求中发送到播放服务器的整个请求主体。我怎样才能找回它?
答案 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()