Getting request payload from POST request in Java servlet Getting request payload from POST request in Java servlet java java

Getting request payload from POST request in Java servlet


Simple answer:
Use getReader() to read the body of the request

More info:
There are two methods for reading the data in the body:

  1. getReader() returns a BufferedReader that will allow you to read the body of the request.

  2. getInputStream() returns a ServletInputStream if you need to read binary data.

Note from the docs: "[Either method] may be called to read the body, not both."


String payloadRequest = getBody(request);

Using this method

public static String getBody(HttpServletRequest request) throws IOException {    String body = null;    StringBuilder stringBuilder = new StringBuilder();    BufferedReader bufferedReader = null;    try {        InputStream inputStream = request.getInputStream();        if (inputStream != null) {            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));            char[] charBuffer = new char[128];            int bytesRead = -1;            while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {                stringBuilder.append(charBuffer, 0, bytesRead);            }        } else {            stringBuilder.append("");        }    } catch (IOException ex) {        throw ex;    } finally {        if (bufferedReader != null) {            try {                bufferedReader.close();            } catch (IOException ex) {                throw ex;            }        }    }    body = stringBuilder.toString();    return body;}


You can use Buffer Reader from request to read

    // Read from request    StringBuilder buffer = new StringBuilder();    BufferedReader reader = request.getReader();    String line;    while ((line = reader.readLine()) != null) {        buffer.append(line);        buffer.append(System.lineSeparator());    }    String data = buffer.toString()