微信开发之如何使用开发工具--weixin-java-tools
一、前沿
微信公众平台由于没有提供针对语言的开发包,只公布了一个基于Http协议的接口和加解密的算法sdk,这样给微信公众号的开发者带来很多工作量,除了实现业务逻辑外,还需要自己处理底层的接口协议细节,因此选择一个良好的sdk能够节省这样的工作量,而目前已经有不少的开源sdk可供使用,java语言的微信公众号sdk也有不少,那么作为java开发者我们应该如何选择呢?我将带着各位对java开源的一些微信公众号的sdk进行各方面的对比分析,为读者选择适合自己的sdk包提供一些帮助。
二、为什么要用weixin-java-tools
如下是官方给出的推荐。
不依赖任何mvc框架
也不依赖servlet,仅仅作为工具使用,可轻松嵌入到任何系统里(可能会有gson,httpclient的版本冲突问题,但是要比依赖spring mvc、struts、或者其他第三方框架好很多)
同时支持企业号和公众号
支持Session,实现了类似于HttpSession的WxSession。
二、几种常用的微信java sdk选型对比
1、初步选型

2、静态对比图

3、性能分析
这里我不多做介绍,已经有网友对此做了分析介绍,原文地址:http://my.oschina.net/ywbrj042/blog/402049?fromerr=NrYoMOTl
4、分析总结
经过静态分析对比、使用测试和性能测试综合分析,我认为在java平台中开发微信公众号服务端基于weixin-java-mp开源框架是最值得推荐的开源sdk.
它的优点有这些:
- 功能强大;包括公众号和企业号两个组件,公众号几乎所有的api都支持,若不知的还可以调用高级接口。
- 扩展性强;weixin-java-mp的代码结构设计合理,预留了较多扩展点,很容易自行扩展。
- 代码质量高;看了一些weixin-java-mp的代码,感觉该组件的质量非常高,设计精良,而且有大量的单元测试更加对该组件质量信心;
- 性能良好;上述测试结果表明该组件自身代码在多线程并发测试的场景下并未发现性能和质量问题;
- 通用性强;weixin-java-mp组件的第三方依赖较小,不依赖任何IOC、MVC容器,也不依赖于servlet,只是一个基础的微信api包装服务,可以在任何java项目中集成。
- 有非常详细的文档,见:https://github.com/chanjarster/weixin-java-tools/wiki
它的局限性有这些:
- 缺少与Servlet和Spring等同用框架的整合,给开发者增加了更高的学习和使用成本,应该基于weixin-java-mp开发一些快速上手的一些模块,以提高开发者使用效率;
对于大多数的场景我都推荐使用weixin-java-mp作为基础开发框架,它相对而言确实是一个更好的选择。
三、weixin-java-tools的使用介绍:
1、工具包下载: weixin-java-common 、weixin-java-mp
如果项目不是maven构建,请按照静态对比图,下载依赖jar包。
maven项目中只需要pom中添加如下依赖:
注:后续学习都是maven构建项目,如果不了解maven构建项目,请参考我的博文,谢谢~~
<!-- 微信开发工具包 -->
<dependency>
<groupId>me.chanjar</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>me.chanjar</groupId>
<artifactId>weixin-java-common</artifactId>
<version>1.3.3</version>
</dependency>
2、使用weixin-java-tools接入微信开发者
使用到两个个比较重要的类 : weixin-java-mp工具包中的 WxMpService (一些API和封装的操作类)、WxMpInMemoryConfigStorage(微信配置参数实体类)
接入中使用到一个方法:WxMpService中的checkSignature方法,校验接入是否合法。
创建一个Servlet类,在get方法中 直接调用WxService.checkSignnature来校验接入是否合法 代码如下:
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
* 用于接入
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub //微信服务器get传递的参数
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr"); //微信工具类
WxMpService wxService=new WxMpServiceImpl(); //注入token的配置参数
/**
* 生产环境 建议将WxMpInMemoryConfigStorage持久化
*/
WxMpInMemoryConfigStorage wxConfigProvider=new WxMpInMemoryConfigStorage();
//注入token值
wxConfigProvider.setToken("weixin"); wxService.setWxMpConfigStorage(wxConfigProvider); boolean flag=wxService.checkSignature(timestamp, nonce, signature); PrintWriter out=response.getWriter();
if(flag){
out.print(echostr);
} out.close();
out=null;
}
3、测试是否能够接入成功,欢迎各位再评论区评论,互相学习。
PS:本节就给大家介绍到这里,后续我会持续使用weixin-java-tools来介绍一些微信开发,欢迎各位持续关注,谢谢~
微信开发之如何使用开发工具--weixin-java-tools的更多相关文章
- 微信公众平台消息接口开发-封装weixin.class.php
原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处 ...
- Senparc.Weixin微信开发(1) 开发验证
官方系列教程 http://www.cnblogs.com/szw/archive/2013/05/20/3089479.html 登录微信公众平台后-左侧找到开发--启用服务器配置 这样,我们才可以 ...
- 微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击
微信小程序的功能开发工具跟公众号的差别,小程序是一种减负思维对简单APP是巨大打击 摘要: 小程序和公众号最大的区别有如下四点:1.小程序没有粉丝,开发者在后台能看到的只能是累计用户访问数以及实时统计 ...
- 运用Java对微信公众平台二次开发技术——开发者模式接入
当初我在这碰到了很多问题,市面上以及网络上的资料特别少,所以当初碰了很多壁,所以现在跟大家分享一下,如何用Java,对微信公众平台进行二次开发. 一.开发预备知识: 最基本的JavaSE与JavaWe ...
- C#微信公众号开发 -- (一)开发之前的准备
本系列文章讲述的是利用C#语言开发微信公众号的实例教程,主要是服务号的开发(因为订阅号不能获取微信开发的高级接口) 想要开发微信服务公众号,首先必须要有一个认证的微信服务号,这样才能够使用微信提供的所 ...
- php 微信公众号+微商城开发 基于Thinkphp3.2框架开发
说明:本教程是自己自学+自己的理解+扩展(包括学习过程中遇到的一些问题) 参考教程:麦子学院--李忠益--http://www.maiziedu.com/u/70409/ 微盟: http://www ...
- 小程序01 微信小程序介绍和开发准备
前言 火爆的微信小程序:跳一跳.摩拜单车.美柚.大众点评.滴滴出行 背景 为什么会有小程序? 微信最早推出公众号和服务号,公众号和服务号所传播的网页经常出现加载缓慢甚至页面空白的情况. 微信小程序的诞 ...
- 微信小程序开发(一)开发准备
微信小程序开发(一)开发准备 微信小程序,近几年,越来越火,应用场景越来越多,好大学习起来,比较容易,学习曲线平缓,你要是会前端开发,那简直可以用易如反掌来形容. 小程序,开发工具官方也提供了,他兼容 ...
- 微信平台ASPX高级定制开发(一):如何使用C#建立响应微信接入和自动回复的代码
微信平台不解释了,如果不了解的百度一下下,如果不会用微信,请自宫,光盘重启电脑,打开CMD输入Format C:.网上有很多针对企业级的高级定制ASPX开发,写得草草了事,很多男人干事都草草了事,这可 ...
随机推荐
- LightOJ 1319 Monkey Tradition(中国剩余定理)
题目链接:https://vjudge.net/contest/28079#problem/U 题目大意:给你n(n<12)行,每行有pi,ri,求一个数ans满足ans%pi=ri(i从1~n ...
- Django-manage.py
一.manage.py命令选项 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行.manage.py接受的是Django提供的内置命令. 内 ...
- hdu 5914(斐波拉契数列)
Triangle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 洛谷P2827 蚯蚓 题解
洛谷P2827 蚯蚓 题解 题目描述 本题中,我们将用符号 ⌊c⌋ 表示对 c 向下取整. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现 ...
- c++ primer 5 表达式
简单总结下容易忽视的地方和易错点吧 1 常用的位操作符,leecode很多算法题都是靠位运算解决的 2 箭头操作符 -> 等价于(* ). 对指针的成员操作 3 sizeof操作符 对 c ...
- es6的set和get实现数据双向绑定,监听变量变化。
直接上代码吧,这个用法真的是效仿了.net的枚举. vue的数据双向绑定就是用这个实现的. 代码: html: <input type="text" id="inp ...
- 三年.NET即将转Java,我该何去何从
2014年5月,大三报了某培训班5个月学习.NET 2014年12月-2015年6月,在某软件公司实习,用ASP.NET开发企业级系统 2015年7月-2017年3月,从毕业生到成为该公司的主要开发人 ...
- Codeforces Round #278 (Div. 1) B - Strip dp+st表+单调队列
B - Strip 思路:简单dp,用st表+单调队列维护一下. #include<bits/stdc++.h> #define LL long long #define fi first ...
- Node.js的Buffer那些你可能不知道的用法
在大多数介绍Buffer的文章中,主要是围绕数据拼接和内存分配这两方面的.比如我们使用fs模块来读取文件内容的时候,返回的就是一个Buffer: fs.readFile('filename', fun ...
- Java经典设计模式之五大创建型模式
转载: Java经典设计模式之五大创建型模式 一.概况 总体来说设计模式分为三大类: (1)创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. (2)结构型模式,共七种: ...