How to use Jersey interceptors to get request body

后端 未结 4 1993
一向
一向 2020-12-11 00:48

I am using REST-Jersey in my project. All the POST data is send in JSON format and unmarshalled at server-side into respective beans. Something lik

4条回答
  •  暖寄归人
    2020-12-11 01:53

    Do not use in.available() method to check the total bytes of Inputstream. Some clients does not set this value. And in this case it will be foul eventhough the message body input stream exists.

     InputStream in = request.getEntityInputStream();
            final StringBuilder b = new StringBuilder();
            try {
                if (in.available() > 0)
    

    Use below code

    String json = IOUtils.toString(requestContext.getEntityStream(), Charsets.UTF_8);
                messageBody = json;
                InputStream in = IOUtils.toInputStream(json);
                requestContext.setEntityStream(in);
    

提交回复
热议问题