Я использую play framework в Java. Я хочу получить весь орган запроса, отправленный в POST-запросе на игровой сервер. Как я могу получить его?
Получить строку тела запроса, отправленную в запросе POST, в java framework
Ответ 1
Взгляните на класс 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
С Play Framework 2.3 можно получить исходный текст json, даже заголовок Content-Type - application/json
def postMethod = Action(parse.tolerantText) { request =>
val txt = request.body
}
Ответ 3
Если вы вызываете следующий код в запросе,
String bodyText = request().body().asText();
bodyText будет null, если заголовок Content-Type является application/json
Невозможно использовать предоставленные API-интерфейсы контроллера только для получения текста JSON, если заголовок Content-Type является application/json без предварительной конвертации в JsonNode
Итак, лучший способ сделать это, если приложение /json - это заголовок Content-Type,
String bodyText = request().body().asJSON().toString();
Это часть сбоя в игре, потому что у них должен быть только способ, чтобы тело запроса было как String независимо от того, что такое заголовок Content-Type.