中山手机网站建设哪家好,北京vi设计公司怎么样,互联网营销的方式有哪些,网站上地图怎么做的前言:申请到微信公众号的同学#xff0c;可能会挺感兴趣的#xff0c;毕竟微信公众号#xff0c;确实是一个好东西#xff0c;它提供了一个很好的平台#xff0c;而且它自带有一套管理模板#xff0c;对于微信公众号可以很好的管理。 但是也仅仅是很好的管理#xff0c;…前言:申请到微信公众号的同学可能会挺感兴趣的毕竟微信公众号确实是一个好东西它提供了一个很好的平台而且它自带有一套管理模板对于微信公众号可以很好的管理。 但是也仅仅是很好的管理因为作为开发者来说很多功能需要更加人性的自定化就需要由自己写程序来提供服务而微信恰恰就提供了这些接口可以方便的我们去调用微信的功能。 于是我们去开启开发者模式 点击“基本配置”然后需要输入url输入token输入EncodingAESKey(这个可以随机生成)最后点击提交。 问题 奇怪的是微信这方面的文档对于这部分好像是没有任何说明(我不知道是不是我没有找到还是怎么的)我输入我个人的域名然后输入随便输入了32位的token然后点击随机生成EncodingAESKey最后选择加密模式然后点击提交最后发现微信提示token验证失败试过好多次也从微信官方文档查询token这是个什么东西最后却只得到token是一个随机的字符串可以自由输入结果却可想而知。 原因 百度之后得到之前输入的url微信会对这个url发出一个http请求而这个url需要正确的对于这个微信的请求作出正确的响应这样才算验证成功这下总算弄明白了 由于我已经有了公网的域名也有了自己的服务器(没有服务器没有域名的只要申请一个空间就可以了空间会送一个三级域名)所以就开始写代码这里是一个servlet你们只要把这个servlet拷贝过去就可以验证了下面列出代码: import java.io.IOException;
import java.util.Arrays;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.codec.digest.DigestUtils;WebServlet(/validateWeiXin.do)
public class ValidateWeiXin extends HttpServlet {private static final long serialVersionUID 1L;private String TOKEN 这里随便填入32位以内的数字英文也就是token;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(text/plain;charsetutf-8);// 微信加密签名String signature request.getParameter(signature);// 随机字符串String echostr request.getParameter(echostr);// 时间戳String timestamp request.getParameter(timestamp);// 随机数String nonce request.getParameter(nonce);String[] str { TOKEN, timestamp, nonce };Arrays.sort(str); // 字典序排序String bigStr str[0] str[1] str[2];// SHA1加密我这里用的是common-codec的jar包你们也可以用java自带的消息消息摘要来写只不过要多写几行代码但结果都一样的DigestUtils.sha1Hex(bigStr);String digest DigestUtils.sha1Hex(bigStr);// 确认请求来至微信if (digest.equals(signature)) {response.getWriter().print(echostr);}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} 有自己服务器的就可以验证成功了 转载于:https://www.cnblogs.com/zhuxiaojie/p/5116552.html