个人学习注册订阅号就行,把资料尽可能完善,不然开发时权限不够,然后登陆,点击订阅号然后扫码就可以微信关注。

左侧一栏可以做一些操作,当然作为一个程序员还是编码爽,点击“开发”,在“开发者工具”中有开发文档可以研读,在“基本配置“开始正式的开发配置,看图片

url就是微信服务器将消息等传给你的服务器时你的服务器中项目地址,这里不是目录而是地址可以看web.xml中自己接收token的地址,token和项目文件中的token一直即可,其它的有随机生成的,有选择的选择明文即可。这时提交会token验证失败,我用的是ngrok将本地地址(localhost:8080)映射到外网,ngrok显示微信服务器已经发给我的服务器,token验证失败是因为尚未编码,上代码

代码目录

主要代码

       String signature = request.getParameter("signature");//接收微信get请求传过来的签名,
       String timestamp = request.getParameter("timestamp");//接受的签名与时间戳timestamp,nonce随机数,echpstr随机字符串三个经过字典排序,组成一个字符串,然后进行sha1加密,比较一致标示是来自微信的请求
       String nonce = request.getParameter("nonce");
       String echostr = request.getParameter("echostr");
       PrintWriter out = response.getWriter();
       System.out.println("---"+"signature="+signature+"timestamp="+timestamp+"nonce="+nonce+"echostr="+echostr);
       if (this.checkSignature(signature, timestamp, nonce)) {
           out.print(echostr);//只有你返回参数echostr时,他才会认为你这个接口是通的,才会提交成功
       }
        
       out.close();

out = null;

    public static boolean checkSignature(String signature, String timestamp, String nonce){
        String[] arr = new String[]{token, timestamp, nonce};//存入数组中
        //字典排序
        Arrays.sort(arr);
         
        StringBuilder content = new StringBuilder();//将三个字符串依次连接为StringBuilder的一个对象
        for(int i = 0; i < arr.length; i++){
            content.append(arr[i]);
        }
        MessageDigest md = null;//java自带的加密类
        String tmpStr = null;
          
        try {
            md = MessageDigest.getInstance("SHA-1");
            //SHA-1加密
            byte[] digest = md.digest(content.toString().getBytes());//对组合后的字符串进行 sha1加密
            tmpStr = byteToStr(digest);//将字节转换为字符串
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        content = null;
        // 比对 判断
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()): false;
    }

 private static String byteToStr(byte[] digest) {
         // TODO Auto-generated method stub
         String strDigest = "";
         for(int i = 0; i < digest.length; i++){
             strDigest += byteToHexStr(digest[i]);
         }
         return strDigest;
     }
     private static String byteToHexStr(byte b) {
         
         char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
         char[] tempArr = new char[2];
         tempArr[0] = Digit[(b >>> 4) & 0X0F];
         tempArr[1] = Digit[b & 0X0F];
           
         String s = new String(tempArr);
         return s;
     }
    

注意是servlet的get请求地址写对,token一致,地址是80端口并且能 外网访问就没问题了,token就能验证成功。

java微信开发之接口连接的更多相关文章

  1. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  2. Java微信开发_00_资源汇总贴

    1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(ht ...

  3. java微信开发

    所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发.     如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微 ...

  4. 分享 Java微信开发SDK

    分享 Java微信开发SDK •发布于 4周前  •作者 朋也  •432 次浏览  •最后一次编辑是 2周前  •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ...

  5. java微信开发之接受消息回复图片或者文本

    上回说到 接口连接成功,接下来是真正的开发了. 消息的接收,整个过程就是关注订阅号的用户在微信订阅号中发送消息,微信服务器接收到消息,将消息发给开发者的服务器,服务器接收消息然后可以根据内容进行回复. ...

  6. java微信开发API第一步 服务器接入

    I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...

  7. java 微信开发的工具类WeChatUtils

    import com.alibaba.fastjson.JSONObject;import com.bhudy.entity.BhudyPlugin;import com.bhudy.service. ...

  8. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  9. 微信开发----JS-SDK接口

    2018.03.15:GitHub下载代码 208.3.6:更新:我们不再使用JosnHelp返回字典类或者强类型,而是直接返回动态类型,这样就会方便的多. JsonHelp更新详情:微信开发---- ...

随机推荐

  1. OpenID Connect Core 1.0(九)声明(Claims)

    5 声明(Claims) 这一节说明客户端如何获取关于终端用户声明和验证事件.它还定义了一组标准的基本声明配置.预定义一组可请求的声明,使用特定的scope值或能用于请求参数中的个人声明.声明可以直接 ...

  2. 02_Docker在CentOS 6和CentOS 7下的安装

    CentOS 7 环境下安装docker 安装Docker 检查系统内核是否高于Linux3.10版本 uname -r 使用root权限操作,确保yum包是最新版本 sudo yum update ...

  3. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  4. SAP函数 CS_WHERE_USED_MAT 反查上层BOM

    遇到用户要根据下层物料反查最上层BOM物料是什么. 试了一下,通过函数 CS_WHERE_USED_MAT 来查询,但是只能往上查询一层,类似事务码CS15的效果.如果要找最上层物料,需要自己写迭代进 ...

  5. $(document)和$(window)各是什么意思?

    jquery中的对象$(document) 是当前文档,就是你看到的整个网页$(window) 如果没有框架则就是你浏览的当前浏览器的窗口 将document, window转换为jquery对象 比 ...

  6. YouTube视频下载方法汇总

    YouTube是一个视频共享网站,YouTuber们自己拍摄并制作视频,上传到YouTube,然后用户观看.分享并评论这些内容.虽然在线观看很方便,但是有些时候你却只能处于离线的状态,比如出差.旅游. ...

  7. 私有Docker仓库login Error response from daemon: Get https://x.x.x.x/v2/: dial tcp x.x.x.x:443: connect: connection refused

    一.登陆私有仓库错误: docker login --username=evan 192.168.0.203 Error response from daemon: Get https://192.1 ...

  8. linux常用命令总结(含选项参数)

    • 用户切换 su              切换到root用户并不切换环境 su - root   切换到root用户并切换环境 su  redhat  切换到redhat不切换环境 • cd切换目 ...

  9. 求二维数组最大子数组的和。郭林林&胡潇丹

    求二维数组子数组的最大值,开始思路不太清晰.先从最简单的开始. 以2*2的简单数组为例找规律, 假设最大数为a[0][0],则summax=a[0][0],比较a[0][0]+a[0][1].a[0] ...

  10. Python 利用 BeautifulSoup 爬取网站获取新闻流

    0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup:   ...