http post方式获取json参数

最近开发一个项目需要后台(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;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值