数据交互原理
在开发模式下,自动恢复和自定义菜单就会失效,反之开启自动恢复和自定义菜单中的一个,开发模式也会失效
这里的微信公众号服务器,就是需要我们在本地开发的。
开发模式接入
填写服务器配置
url:微信公众号服务器的地址
tocken:开发者随意填写,接入验证的时候需要生成一个
encodeingAESKey:随机生产的字符串,主要用的是消息加密,因为消息分为三种类型,如果选择了安全模式,就必须要用到随机字符串,对消息加密解密,相当于密钥
验证服务器地址有效性
点击提交之后会发送一个get请求,到服务器地址上,同时会发送四个参数过来
然后通过java代码进行校验
关于代码更多请查看:https://www.imooc.com/video/7227/0
可能会需要
public static String getSha1(String str){
if (null == str || 0 == str.length()){
return null;
}
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'};
try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));
byte[] md = mdTemp.digest();
int j = md.length;
char[] buf = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i ) {
byte byte0 = md[i];
buf[k ] = hexDigits[byte0 >>> 4 & 0xf];
buf[k ] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (Exception e) {
return null;
}
}
java项目中新建servlet 会自动生产 web.xml, 在web.xml 中
<servlet-name>servlet1(随便写)</servlet-name>
<servlet-class>刚才新建的servlet 全类名</servlet-class>
<servlet-mapping>
<servlet-name>servlet1 (上面定义servlet-name 中的名字)</servlet-name>
<url-pattern>/servlet1.do</url-pattern><!--注释 : 这里配置的是 浏览器访问 servlet 的地址-->
</servlet-mapping>
消息的接受与响应1
接收
测试本地的servlet能否通过公网访问
先通过本地访问下
报错是正常的,因为没有把参数传过去
然后通过公网地址,也是可以正常访问的
将url配置到微信中
tocken要和代码中的一致
去微信中进行配置
之后点击提交,提交成功之后说明微信公众号和java后台已经对接成功了。
点击启用
之前说过,开发模式和编辑模式是互斥的,这里如这里就会自动失效,包括自定义菜单也是如此
响应
更多查看视频:https://www.imooc.com/video/7228
消息的接受与响应2
更多查看视频:https://www.imooc.com/video/7229
消息的接受与响应3
更多查看视频:https://www.imooc.com/video/7230
测试