如何接收格式为“application/octet-stream”的请求参数

1、项目背景与业务逻辑:调用第三方公司的前端页面处理业务,完了以后第三方公司通过消息推送的方式将处理结果通过接口传到我们的项目,我们的项目通过接口去接收处理结果,并把处理结果保存在本地。

2、第三方公司的消息推送接口用的是“application/octet-stream”格式的请求参数,当时我们项目普遍用的有两种接收方式:

public ResultBean queryWalletBalance(@RequestBody Map<String, String> params){}

public ResultBean queryWalletBalance(@RequestParam Map<String, String> params){}

然后我尝试了这两种都接收不到数据,报:Content type 'application/octet-stream' not supported。

之后换了一种方式成功接收:

public void receiveRegisterStatus(HttpServletRequest request){
        //通过HttpServletRequest对象接收请求的参数
		log.debug("request==={}",request);
		log.error("receiveRegisterStatus-request==={}",request);
		BufferedReader reader = null ;
		try {
            //获取头部数据
		    reader = request.getReader();
		    StringBuffer sb = new StringBuffer();
		    String str  ;
            //将数据读到StringBuffer里面
		    while (null != (str = reader.readLine())){
		        sb.append( str );
		    }
		    log.error("receiveRegisterStatus=={}",sb);
		    JSONObject msgBody = JSON.parseObject(sb.toString()).getJSONObject("msgBody");
		    ResultBean rb = null;
		    if(null != msgBody){
		    	//解析保存数据
		    	rb = JSON.parseObject(msgBody.toJSONString(),ResultBean.class);
		    	String registerNo = rb.get("registerNo") != null ? rb.get("registerNo").toString() : "";
		    	String regStatus = rb.get("regStatus") != null ? rb.get("regStatus").toString() : "";
		    	String confirmAmtStatus = rb.get("confirmAmtStatus") != null ? rb.get("confirmAmtStatus").toString() : "";
		    	this.baseBiz.updWalletInfoByRegisterNo(registerNo, regStatus, confirmAmtStatus);
		    }
		} catch (IOException e) {
		    e.printStackTrace();
		    log.error("receiveRegisterStatus=e=={}",e);
		}finally {
		    if(null == reader){
		        try {
		            reader.close();
		        } catch (IOException e) {
		            e.printStackTrace();
		        }
		    }
		}
	}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值