2014-04-12 14 views

Odpowiedz

10

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

+0

Chcę uzyskać surowy ciąg ciała bez konwertowania go do konkretnych struktur danych Java. Jak mogę to osiągnąć? – Bourne

+0

Powinieneś zajrzeć do wspomnianej klasy: P 'String bodyText = request(). Body(). AsText();' – biesior

+3

Próbowałem tego, ale to pobiera zerowy – Bourne

2

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.

9

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 
} 
+0

to właściwie jedyna słuszna odpowiedź – aveic

+0

Ale to nie pracować w Javie. – M156

+2

Prawdopodobnie to pomoże: https://www.ricardclau.com/2015/06/access-to-the-raw-request-body-in-play-framework/ –

Powiązane problemy