utiliza peticiones peticion metodos httppost example envio ejemplos ejemplo desde como java jersey dropwizard

java - metodos - peticiones get y post php



Leer el cuerpo de una solicitud enviada a un servicio dropwizard (1)

Puede cambiar el parámetro PaymentMessage paymentMessage a String paymentMessage que debe ser la cadena json. Entonces, no habrá ninguna validación, ni tampoco tendrás el POJO directamente.

Necesito leer el contenido de la solicitud json enviada a un servicio dropwizard. El mensaje en sí mismo es serializado por dropwizard al objeto anotado que es la entrada del método (objeto PaymentMessage ). He agregado HttpServletRequest como un parámetro de entrada del método. El HttpServletRequest no es nulo, pero el método HttpServletRequest#getInputStream() devuelve un flujo no nulo pero vacío .

El curl: curl -i -X POST -H''Content-Type: application/json; charset=UTF-8'' / http://localhost:8080/NL/users/555855/payments -d ''{"eventId":"110099110099","hznHouseholdId":"1234567_nl","ipAddress":"123.123.123.123","transactionId":"799ef666-e09c-8350-247b-c466997714ad","transactionDate":"2014-09-29T16:56:21Z","appName":"Flappy Bird"}'' curl -i -X POST -H''Content-Type: application/json; charset=UTF-8'' / http://localhost:8080/NL/users/555855/payments -d ''{"eventId":"110099110099","hznHouseholdId":"1234567_nl","ipAddress":"123.123.123.123","transactionId":"799ef666-e09c-8350-247b-c466997714ad","transactionDate":"2014-09-29T16:56:21Z","appName":"Flappy Bird"}''

El código:

@POST @Path("/{countryCode}/users/{customerId}/payments") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response processPaymentAction( @Context final HttpServletRequest request, @Nonnull @PathParam("countryCode") final String countryCode, @Nonnull @PathParam("customerId") final String customerId, @Valid PaymentMessage paymentMessage) throws IOException, ServletException { LOG.debug("Request "+request.toString()); final ByteSource byteSource = new ByteSource() { @Override public InputStream openStream() throws IOException { return request.getInputStream(); } }; LOG.debug("charset "+request.getCharacterEncoding()); final String contents = byteSource.asCharSource(Charset.forName(request.getCharacterEncoding())).read(); LOG.debug("contents: "+contents); return Response.status(Response.Status.ACCEPTED).build(); }