微信开发之如何使用开发工具--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开发,写得草草了事,很多男人干事都草草了事,这可 ...
随机推荐
- mac pro上安装docker
1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction ...
- storm的acker机制
一.简介: storm中有一个很重要的特性: 保证发出的每个tuple都会被完整处理.一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所产生的所有的子tuple都被成功处理.如果 ...
- PHP安全编程:register_globals的安全性
如果你还能记起早期Web应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会.当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立.它 ...
- PHP 中文乱码解决方式
1.PHP代码在PHP Storm中乱码,设置PHP Storm的默认文件编码格式为UTF-8: 文件->设置->编辑器->文件编码->将所有默认编码调整为UTF-8: 2.对 ...
- ref:学习笔记 UpdateXml() MYSQL显错注入
ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...
- (15) go 方法
- powershell 性能测试小脚本
powershell 性能测试: 转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 1. 将待测试的脚本封装在代码块中 2. 使用 Get-Ch ...
- Wannafly挑战赛7 B - codeJan与旅行
题目描述 codeJan 非常喜欢旅行.现在有 n 个城市排在一条线上,并且 codeJan 的位置不和任何一个城市的位置重叠.codeJan 想要游览 m 个城市,同时因为时间是不断变化的,游览一个 ...
- 洛谷P1528 切蛋糕 [搜索,二分答案]
题目传送门 切蛋糕 题目描述 Facer今天买了n块蛋糕,不料被信息组中球球等好吃懒做的家伙发现了,没办法,只好浪费一点来填他们的嘴巴.他答应给每个人留一口,然后量了量每个人口的大小.Facer有把刀 ...
- Python并发编-用Event,线程检测数据库连接的例子
尝试3次连接数据库 import time import random from threading import Thread,Event def connect_db(e): count = 0 ...