Получить строку тела запроса, отправленную в 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.xval body = request.body.asJson.get.toString()