在java web应用中,我们如何获取post请求body中的内容?以及需要注意的问题。
通常利用request获取参数可以直接通过(name)的方式获取url上面或者ajax data提交上来的参数。但是body是没有名字的,无法通过参数名字这种方式获取。这时候需要用到io流的方式来获取body中的内容。
这里先贴出一段代码:
package ; import ; import ; import ; import ; import ; import ; import ; import ; import .; import ; import ; import ; public class BusinessServlet extends HttpServlet{ public static final Logger log = (); /** * */ private static final long serialVersionUID = 1L; private static BusinessService service; static{ service = (BusinessService) ("businessService"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(())); String body = (reader); String name = ("name"); if((body)){ ("business receive somthing with body :"+body); } ("UTF-8"); ("application/json"); (HttpServletResponse.SC_OK); ().println((name)); } }在这段代码doPost方法中,用到了IO流来获取post提交的body,这样我们就获取了客户端提交的参数。
需要注意的是:获取body参数,需要在()方法之前调用(如果有需要取QueryString参数的话),因为一旦调用了getParameter()方法之后,再通过IO流的方式获取body参数就失效了(亲测返回"")。
另外,这里使用了dubbo-2.5.的(reader)方法来读取post body的内容。