Java Web中如何获取请求体内容呢?
我们知道请求方式分为两种:Get,Post。
/*** * Compatible with GET and POST * * @param request * @return : <code>byte[]</code> * @throws IOException */ public static byte[] getRequestQuery(HttpServletRequest request) throws IOException { String submitMehtod = request.getMethod(); String queryString = null; if (submitMehtod.equals("GET")) {// GET queryString = request.getQueryString(); String charEncoding = request.getCharacterEncoding();// charset if (charEncoding == null) { charEncoding = "UTF-8"; } return queryString.getBytes(charEncoding); } else {// POST return getRequestPostBytes(request); } } /*** * Get request query string, form method : post * * @param request * @return byte[] * @throws IOException */ public static byte[] getRequestPostBytes(HttpServletRequest request) throws IOException { int contentLength = request.getContentLength(); if(contentLength<0){ return null; } byte buffer[] = new byte[contentLength]; for (int i = 0; i < contentLength;) { int readlen = request.getInputStream().read(buffer, i, contentLength - i); if (readlen == -1) { break; } i += readlen; } return buffer; } /*** * Get request query string, form method : post * * @param request * @return * @throws IOException */ public static String getRequestPostStr(HttpServletRequest request) throws IOException { byte buffer[] = getRequestPostBytes(request); String charEncoding = request.getCharacterEncoding(); if (charEncoding == null) { charEncoding = "UTF-8"; } return new String(buffer, charEncoding); }
说明:当请求方式为“Get”时,直接使用request.getQueryString()获取String
当请求方式为“Post”时,读取InputStream(request.getInputStream())