Получить строку тела запроса, отправленную в POST request в Play framework java

Я использую Play framework в Java. Я хочу получить все тело запроса, отправленное в запросе POST на сервер воспроизведения. Как я могу его вернуть?

4 ответов


на 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


С Play Framework 2.3 можно получить необработанный текст json, даже заголовок Content-Type-application / json

def postMethod = Action(parse.tolerantText) { request =>
    val txt = request.body
}

Если вы вызываете следующий код по запросу;

String bodyText = request().body().asText();

bodyText будет нулевым, если заголовок Content-Type-application / json

нет способа использовать предоставленные API контроллера, чтобы просто получить текст JSON, если заголовок Content-Type-application / json без предварительного преобразования в Jsonode

таким образом, лучший способ сделать это, если приложение/json является заголовком типа контента

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

это сбой на части Play framework, потому что у них должен быть только метод для получения тела запроса в виде строки независимо от заголовка Content-Type.


Он даст тело запроса JSON как строку. Я тестировал его на Play 2.6.x
val body = request.body.asJson.get.toString()