經驗總結:
最近在用struts2 寫接口,要給請求者返回一個json字符串,但是,請求是用POST請求的,各種方法嘗試,最后終於得到了答案:
/** * 封裝接收客戶端傳過來的post數據 * @param ctx ActionContext的對象 * @return */ public static String getRequestBody(ActionContext ctx){ try { HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); InputStream inputStream = request.getInputStream(); String strMessage = ""; StringBuffer buff = new StringBuffer(); BufferedReader bufferReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); while((strMessage = bufferReader.readLine()) != null){ buff.append(strMessage); } bufferReader.close(); inputStream.close(); return buff.toString(); } catch (Exception e) { e.printStackTrace(); } return null; }
經過這個方法后,在另一個需要使用到POST的json的時候,只需要
ActionContext ctx = ActionContext.getContext();
String json = getRequestBody(ctx);
上面那個json就是POST中的json數據.