微信小程序-接收消息推送

【开发管理】【开发设置】【消息推送】---开发者服务器接收消息推送

点击启用的时候 会出现会填写服务器地址之类的信息,填写之后点击提交,会向填写的服务器地址发送get请求校验通过后才能成功启用。

当时开发的时候就想,这个接口用来校验,但是这个接口也要用来接收消息体,要求返回的参数也不一致,怎么区分呢?

后来想到通过get和post请求参数的不同来区分是校验逻辑还是消息逻辑。(或许也可以是上线之前只写校验逻辑,提交通过校验后再改正,我没有用这种方法,不知道正不正确。)

附上我的源码

public void getWechatBackInfo(HttpServletRequest request, HttpServletResponse response) {
		String echostr = request.getParameter("echostr");
		//校验处理
		if (echostr != null && (echostr.length()) != 0) {
			PrintWriter out = null;
			try {
				//TODO 省略校验逻辑,当校验成功时返回echostr字段
				out = response.getWriter();
				out.print(echostr);
				out.flush();
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				out.close();
			}
			return;
		}
		
		//正常处理
		try {
			StringBuffer str = new StringBuffer();
			InputStreamReader reader=new InputStreamReader(request.getInputStream(),"UTF-8");
			char [] buff=new char[1024];
			int length=0;
			while((length=reader.read(buff))!=-1){
				String x=new String(buff,0,length);
				str.append(x);
			}
			String jsonstr = str.toString();
			//TODO jsonstr就是微信参数的json串 
			//TODO 省略处理消息体的代码
		}catch (Exception e){
		}

		//不返回报错 报错只记录在日志中,所有情况都默认为成功
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.print("success");
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			out.close();
		}
	}

ps:不知道我这样配置是不是走了弯路,但是启用成功也接收到消息了,如果有大佬路过的话希望能指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值