本文主要讲解微信公众号Struts2框架进行服务器验证接口对接。
使用工具:MyEclipse
准备工作:
1.打开MyEclipse,新建一个Web项目,比如“WXLocalTest”;
2.搭建Strust2框架环境,搭建方式这里略过,不会的自己学习下Strtus2基础。
3.准备一个域名或买一个花生壳域名
如果使用花生壳内网映射可参考孔浩微信公众号开发教程第一课即可:http://www.konghao.org/video/1118
一、创建一个action类来实现”接入微信公众平台开发“
比如新建一个action类 InitWX.java:
package com.xingyun.actions;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.xingyun.utils.SecurityKitUtils;
public class InitWX extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -333592169745279630L;
private static final String TOKEN="xingyun";
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
// 获取请求和响应
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
//获取请求参数
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
//1.构造字符串数组
String[] arr={InitWX.TOKEN,nonce,timestamp};
//2.字符串数组排序
Arrays.sort(arr);
//3.将排序后的三个字符串拼接成一个字符串
StringBuffer sb=new StringBuffer();
for (String str :arr) {
sb.append(str);
}
String sha1=SecurityKitUtils.sha1(sb.toString());
//System.out.println(sha1.equals(signature));
if(sha1.equals(signature))
{
try {
OutputStream os = response.getOutputStream();
BufferedWriter resBr = new BufferedWriter(new OutputStreamWriter(os));
resBr.write(echostr);
resBr.flush();
resBr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
二、创建一个sha1加密算法工具类
SecurityKitUtils .java
package com.xingyun.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SecurityKitUtils {
public static String sha1(String str) {
try {
StringBuffer sb=new StringBuffer();
MessageDigest messageDigest=MessageDigest.getInstance("sha1");
messageDigest.update(str.getBytes());
byte[] msg=messageDigest.digest();
for (byte b : msg) {
sb.append(String.format("%02x",b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
三、配置strtust2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!--配置包时必须指定name属性,该属性值可以任意取名,但必须唯一。 -->
<package name="test" extends="struts-default">
<!-- 获取微信服务器验证-->
<action name="WXInit" class="com.xingyun.actions.InitWX">
</action>
</package>
</struts>
四、填写URL和Token
URL
http://mywebchat.ticp.net/WXLocalTest/WXInit
Token
xingyun
注意:这里的Token要和上面写的后台代码中的保持一致。
五、点击提交
当出现提示修改成功和提交按钮消失,说明配置成功了。
本文由星云原创,转载请注明出处!
交流即分享分享才能进步!
——— By 星云