Używam architektury gry w języku Java. Chcę pobrać całą treść żądania wysłaną w żądaniu POST do serwera odtwarzania. Jak mogę to odzyskać?Odzyskaj łańcuch treści żądania wysłany w żądaniu POST w strukturze odtwarzania java
Odpowiedz
Spójrz w play.mvc.Http
klasie, masz kilka opcji tam (w zależności od formatu danych), tj
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();
można przetestować request().body().asText()
tj użyciu Curl z poleceń:
curl -H "Content-Type: text/plain" -d 'Hello world !' http://domain.com/your-post-action
... lub za pomocą jakiegoś narzędzia, takiego jak wtyczka przeglądarki: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
Jeśli wywołasz poniższy kod na żądanie;
String bodyText = request().body().asText();
bodyText będzie null jeśli nagłówek Content-Type jest application/json
Nie jest sposobem przy użyciu dostarczonych API sterownika do po prostu tekst JSON jeśli nagłówek Content-Type jest application/json bez uprzedniej konwersji do JsonNode
więc najlepszym sposobem, aby to zrobić, jeśli aplikacja/json jest twój nagłówek Content-Type jest
String bodyText = request().body().asJSON().toString();
to nie na odgrywają rolę framework, ponieważ powinny mieć metodę pobierania ciała żądania w postaci ciągu znaków bez względu na nagłówek Content-Type.
z luzem Framework 2.3 jest to możliwe, aby uzyskać surowy tekst json nawet jest Content-Type nagłówek jest application/json
def postMethod = Action(parse.tolerantText) { request =>
val txt = request.body
}
Chcę uzyskać surowy ciąg ciała bez konwertowania go do konkretnych struktur danych Java. Jak mogę to osiągnąć? – Bourne
Powinieneś zajrzeć do wspomnianej klasy: P 'String bodyText = request(). Body(). AsText();' – biesior
Próbowałem tego, ale to pobiera zerowy – Bourne