java+web服务器微信,实战:用java语言实现将微信公众平台的消息转发到私人WEB服务器上...

前言:微信公众平台支持将普通客户发送过来的消息,转发到你自己的WEB服务器上,你可以根据自己的业务判断逻辑,回复不同的消息内容给普通客户。下面开始讲我的实战过程:

1、登陆微信公众平台后,进入菜单"高级功能",选择进入"开发模式",此时,它会提示你输入你的消息转发的网址和token,如下图所示:

412b3c7ffb6245153f03cb71d1415841.png

在这个例子里头,我们的URL采用的方式是用JAVA写一个servlet,然后填上该servlet在公网的地址(servlet是什么我就不解释了,java最基础的东西),Token可以随便写。这个步骤最重要的一点是,URL只支持80端口,如果你提供的的URL不是80端口,就不要做后续步骤了。

2、在第一个步骤点击"提交"按钮的时候,微信会向你的serlet以GET协议向你发四个参数,如果要让微信相信你的URL,最简单的方式就是获取echostr参数并直接返回。上doGet的代码段:

550fe552a1e2a291a4b7e74c10b77877.png

3、如果这个微信那边能提交成功,恭喜你,第一步成功完成了,下面就可以在你的代码中接收普通客户发送过来的消息了。不过你得先在微信平台中将你的模式改成"开发者模式",修改方式如下:

先进入"高级功能",选择进入"编辑模式",将"编辑模式"关闭;

在进入"高级功能",选择进入"开发者模式",将"开发者模式"开启;

4、开始编写接收消息的JAVA代码了,微信以POST方式,将普通用户发送的消息转发到你的servlet上,所以我们现在要在doPost里头写接收和回复消息的代码:

e689fe82dfcf594756175ed942c05cb8.png

这时候你用你的普通账户,向你的公众账户发个"hello"的消息,这时候在你的控制台会打印出类似以下的内容:

f5a9c0b2c1162aa3292cfc82a21a3e30.png

偷懒一下,自行去写XML解析代码去获取各个数据项的内容,下面我们该向该客户端回复消息了,上代码:

8755c19a4ab2fe838f5c90802d5a8fbc.png

此时,在我的普通微信客户端,收到了"hello ,thank you to call me"的字样,连接成功!

5、微信支持图片、声音等回复,详细请见微信的官方API网址:

6、贴上整个JAVA代码:

import java.io.BufferedInputStream;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class WXService extends HttpServlet {

private static final long serialVersionUID = 2L;

/**

* 普通账户向微信发送的消息,以POST方式提交

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//从流里头获取普通用户发送的XML消息串

BufferedInputStream bf = new BufferedInputStream(request.getInputStream());

byte receiveByte[] = new byte[bf.available()];

bf.read(receiveByte);

bf.close();

//将收到消息内容打印出来

String receiveMsg = new String(receiveByte);

System.out.println("receiveMsg="+receiveMsg);

//TODO 解析XML串中的各个数据项

//回复消息给发送者

String responseXML = " "+

""+

""+

"12345678"+

""+

""+

"0"+

"";

response.getWriter().println(responseXML);

}

/**

* 微信对你的服务认证方式采用GET协议

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String signature = request.getParameter("signature");//微信加密签名

String timestamp = request.getParameter("timestamp");//时间戳

String nonce = request.getParameter("nonce");//随机数

String echostr = request.getParameter("echostr");//随机字符串

//TODO 对接收到的参数做数据验证,来确认该请求来自微信,避免被第三方随意攻击

//验证通过后,需要将随机字符串原样返回给微信,微信才确认你的这个服务正常

response.getWriter().print(echostr);

}

}

7、我的的测试的公众平台,要不你关注下?:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值