http post方式获取json参数

来源:互联网 发布:微信网络设置在哪里 编辑:程序博客网 时间:2024/05/22 14:08
最近开发一个项目需要后台(C++)请求一个url传递json参数,我这边接收json参数,处理后返回json数据。使用http  post传送,最初在request里死活找不到json参数,后来查找资料发现json数据在输入流中,需反序列话才能得到。public void posDate() throws IOException  {  JSONObject jsonObj = new JSONObject();   HttpServletRequest request = ServletActionContext.getRequest();  String param = getPostParameter(request);  System.out.println(param);  JSONArray jsonArray3 = JSONArray.fromObject("["+param+"]" );  JSONObject jsonObjSN = jsonArray3.getJSONObject(0);  String sn = (String) jsonObjSN.get("sn");   if(StringUtil.isNotNullStr(sn)){      Map<String, String> params = new HashMap<String, String>();      params.put("sn", sn);      List<TPos> posList = posService.findAll(params);      if(null != posList && posList.size() > 0 ){      TPos pos = posList.get(0);      try {            jsonObj.put("sn", pos.getFsn());            jsonObj.put("merchat",pos.getMerchant().getFmerchantName() );            jsonObj.put("CUS_ID",pos.getMerchant().getFmerchatNO());            jsonObj.put("TERM_ID", pos.getFposNO());          }           catch (JSONException e) {            e.printStackTrace();          }      }      else{      try {          jsonObj.put("sn", "");          jsonObj.put("merchat","未注册商户" );          jsonObj.put("CUS_ID","999999999999999");          jsonObj.put("TERM_ID", "99999999");        }         catch (JSONException e) {          e.printStackTrace();        }      }  }else{  try {          jsonObj.put("sn", "");          jsonObj.put("merchat","未注册商户" );          jsonObj.put("CUS_ID","999999999999999");          jsonObj.put("TERM_ID", "99999999");        }         catch (JSONException e) {          e.printStackTrace();        }  }      HttpServletResponse response = ServletActionContext.getResponse();      response.setCharacterEncoding("UTF-8");      PrintWriter out = response.getWriter();            out.print(jsonObj);      out.close();  }  /**  * 根据request获取Post参数  * @param request  * @return  * @throws IOException  */  private static String getPostParameter(HttpServletRequest request) throws IOException{  BufferedInputStream buf = null;  int iContentLen = request.getContentLength();  byte sContent[] = new byte[iContentLen];  String sContent2 = null;  try {  buf = new BufferedInputStream(request.getInputStream());  buf.read(sContent, 0, sContent.length);  sContent2 = new String(sContent,0,iContentLen,"UTF-8");  } catch (IOException e) {  throw new IOException("Parse data error!",e);  } finally  {  try {  buf.close();  } catch (IOException e) {  }  }  return sContent2;  }

0 0