我使用的是Java的play框架。我想检索POST请求中发送到play服务器的整个请求主体。我该如何检索?
flvlnr441#
看一下play.mvc.Http类,您可以在那里选择一些选项(取决于数据格式),即
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:
request().body().asText()
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
2nc8po8w2#
使用Play Framework 2.3,即使内容类型头是application/json,也可以获得原始json文本
def postMethod = Action(parse.tolerantText) { request => val txt = request.body }
bnl4lu3b3#
如果对请求调用以下代码;
String bodyText = request().body().asText();
如果内容类型标头为application/json,则bodyText将为空如果Content-Type标头是application/json,则无法使用提供的控制器API仅获取JSON文本,而不首先转换为JsonNode因此,如果application/json是您的Content-Type标头,最好的方法是
String bodyText = request().body().asJSON().toString();
这是play框架的一个失败,因为不管Content-Type头是什么,他们应该只使用一个方法来获取请求体作为String。
wz1wpwve4#
它会以字符串的形式给予请求JSON主体。我在play2.6.x上测试过val body = request.body.asJson.get.toString()
val body = request.body.asJson.get.toString()
von4xj4u5#
请求主体().asBytes(). utf8字符串()
5条答案
按热度按时间flvlnr441#
看一下
play.mvc.Http
类,您可以在那里选择一些选项(取决于数据格式),即您可以测试
request().body().asText()
,即从命令行使用cUrl:...或使用一些工具,如浏览器插件:https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
2nc8po8w2#
使用Play Framework 2.3,即使内容类型头是application/json,也可以获得原始json文本
bnl4lu3b3#
如果对请求调用以下代码;
如果内容类型标头为application/json,则bodyText将为空
如果Content-Type标头是application/json,则无法使用提供的控制器API仅获取JSON文本,而不首先转换为JsonNode
因此,如果application/json是您的Content-Type标头,最好的方法是
这是play框架的一个失败,因为不管Content-Type头是什么,他们应该只使用一个方法来获取请求体作为String。
wz1wpwve4#
它会以字符串的形式给予请求JSON主体。我在play2.6.x上测试过
val body = request.body.asJson.get.toString()
von4xj4u5#
请求主体().asBytes(). utf8字符串()