java微信开发之接口连接
个人学习注册订阅号就行,把资料尽可能完善,不然开发时权限不够,然后登陆,点击订阅号然后扫码就可以微信关注。
左侧一栏可以做一些操作,当然作为一个程序员还是编码爽,点击“开发”,在“开发者工具”中有开发文档可以研读,在“基本配置“开始正式的开发配置,看图片
url就是微信服务器将消息等传给你的服务器时你的服务器中项目地址,这里不是目录而是地址可以看web.xml中自己接收token的地址,token和项目文件中的token一直即可,其它的有随机生成的,有选择的选择明文即可。这时提交会token验证失败,我用的是ngrok将本地地址(localhost:8080)映射到外网,ngrok显示微信服务器已经发给我的服务器,token验证失败是因为尚未编码,上代码
代码目录
主要代码
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;
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;
}
// 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微信开发之接口连接的更多相关文章
- java微信开发API解析(二)-获取消息和回复消息
java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...
- Java微信开发_00_资源汇总贴
1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(ht ...
- java微信开发
所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发. 如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微 ...
- 分享 Java微信开发SDK
分享 Java微信开发SDK •发布于 4周前 •作者 朋也 •432 次浏览 •最后一次编辑是 2周前 •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ...
- java微信开发之接受消息回复图片或者文本
上回说到 接口连接成功,接下来是真正的开发了. 消息的接收,整个过程就是关注订阅号的用户在微信订阅号中发送消息,微信服务器接收到消息,将消息发给开发者的服务器,服务器接收消息然后可以根据内容进行回复. ...
- java微信开发API第一步 服务器接入
I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...
- java 微信开发的工具类WeChatUtils
import com.alibaba.fastjson.JSONObject;import com.bhudy.entity.BhudyPlugin;import com.bhudy.service. ...
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- 微信开发----JS-SDK接口
2018.03.15:GitHub下载代码 208.3.6:更新:我们不再使用JosnHelp返回字典类或者强类型,而是直接返回动态类型,这样就会方便的多. JsonHelp更新详情:微信开发---- ...
随机推荐
- #leetcode刷题之路49-字母异位词分组
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串.示例:输入: ["eat", "tea", "tan" ...
- [笔记] FMX 在 iOS 平台主窗体 DoubleTap 手势,要慎用!
最近得到用户的反馈,说 iOS 平台下的按钮操作怪怪的,按快点没反应(同一个按钮连续快按二下),需要按一下后等 0.3 秒后,才有反应.得到这个讯息后,检查了其它的平台 Windows , Andro ...
- redis缓存数据库入门教程
入门redis教程 前言: 应公司需求,最近学习了一下redis数据库的一些简单入门的教程,整理出来分享给大家,喜欢的可以关注和点赞哦~ 如文章中有不足之处求指正,谢谢 目录 ·什么是redis?为什 ...
- Oracletop10物理段
Oracletop10物理段 select owner, name, type, mega, tbs from (select owner, case when segment_type = 'LOB ...
- Memcached 集群架构问题归纳
集群架构方面的问题o memcached是怎么工作的?o memcached最大的优势是什么?o memcached和MySQL的query cache相比,有什么优缺点?o memcached和服务 ...
- tornado-About Web
1.轻量级的web开发框架,没有像django那样的命令行工具,只用于写一些小的脚本 (1)安装tornado包 pip intall tornado # conda install tornado( ...
- Wannafly挑战赛18C 异或和
傻逼题,和期望没毛关系... 分开xy坐标,n方直接统计每个坐标的曼蛤顿距离即可.. #include<bits/stdc++.h> #define il inline #define v ...
- PHP Rabbitmq 报错Broken pipe
fwrite(): send of 13 bytes failed with errno=32 Broken pipe fwrite(): send of 21 bytes failed with e ...
- Python 10min系列之面试题解析丨Python实现tail -f功能
关于这道题,简单说一下我的想法吧.当然,也有很好用的 pyinotify 模块专门监听文件变化,不过我更想介绍的,是解决的思路. 毕竟作为面试官,还是想看到一下解决问题的思路,而且我觉得这一题的难点不 ...
- Django 构建一个项目
一.创建django程序 终端命令:django-admin startproject fahaicmd IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python man ...