How do I print the content of httprequest request?
You can print the request type using:
request.getMethod();
You can print all the headers as mentioned here:
Enumeration<String> headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); System.out.println("Header Name - " + headerName + ", Value - " + request.getHeader(headerName));}
To print all the request params, use this:
Enumeration<String> params = request.getParameterNames(); while(params.hasMoreElements()){ String paramName = params.nextElement(); System.out.println("Parameter Name - "+paramName+", Value - "+request.getParameter(paramName));}
request
is the instance of HttpServletRequest
You can beautify the outputs as you desire.
This should be more helpful for debug.Answer from @Juned Ahsan will not specify full URL and will not print multiple headers/parameters.
private String httpServletRequestToString(HttpServletRequest request) { StringBuilder sb = new StringBuilder(); sb.append("Request Method = [" + request.getMethod() + "], "); sb.append("Request URL Path = [" + request.getRequestURL() + "], "); String headers = Collections.list(request.getHeaderNames()).stream() .map(headerName -> headerName + " : " + Collections.list(request.getHeaders(headerName)) ) .collect(Collectors.joining(", ")); if (headers.isEmpty()) { sb.append("Request headers: NONE,"); } else { sb.append("Request headers: ["+headers+"],"); } String parameters = Collections.list(request.getParameterNames()).stream() .map(p -> p + " : " + Arrays.asList( request.getParameterValues(p)) ) .collect(Collectors.joining(", ")); if (parameters.isEmpty()) { sb.append("Request parameters: NONE."); } else { sb.append("Request parameters: [" + parameters + "]."); } return sb.toString();}
In case someone also want to dump response like me. i avoided to dump response body. following code just dump the StatusCode and Headers.
static private String dumpResponse(HttpServletResponse resp){ StringBuilder sb = new StringBuilder(); sb.append("Response Status = [" + resp.getStatus() + "], "); String headers = resp.getHeaderNames().stream() .map(headerName -> headerName + " : " + resp.getHeaders(headerName) ) .collect(Collectors.joining(", ")); if (headers.isEmpty()) { sb.append("Response headers: NONE,"); } else { sb.append("Response headers: "+headers+","); } return sb.toString();}