到了现在,必须要正视一个问题了,之前所作的都是不推荐的,为什么,因为你没发现之前咱们还在调用官方API接口吗?还在写程序去获取token机械json数据呢?而且json数据咱们还要自己拼接,这可是不行的,要知道在实际的开发中,是奔着以最快时间达成目标为主要的,所以,怎么办?

使用开源框架啊,现如今,做微信公众号开发这块也是比较成熟的,也有一些比较好的开源框架,可以说,使用了开源框架之后,很多事情基本上一行代码搞定。

我这里使用的开源框架是—Wx-tools

GitHub地址:https://github.com/antgan/wx-tools

技术文档地址:https://www.w3cschool.cn/wxtools/

这个开源库给的文档还是相当详细的,可以看一下文档目录

所以基本上看着文档就能实现大多数功能,这里真的要感谢这位开源作者了,偷偷告诉你,这位开源作者跟我一样年龄,唉,惭愧啊,不过人家工作早,赞!自己要加油了!

这里简单说一下用法,首先导入项目依赖

<!--wx-tools--><dependency><groupId>com.soecode.wx-tools</groupId><artifactId>wx-tools</artifactId><version>2.1.4-RELEASE</version></dependency>

这里还要依赖一些其他的包,这里一并给出

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version></dependency><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.3</version></dependency><!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.10</version></dependency><!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency>

导入以上maven依赖之后就可以开心使用这个开源框架了。

服务器验证

首先从最开始的服务器验证这块,对于wx-tools这个框架,总的接口就是IService,而我们要使用的则是它的实现类WxService,很多功能都是通过它调用的,比如我们进行服务器签名验证

这里使用开源框架来替换我们之前写的工具类,记得这里多了一个参数,看,现在使用开源框架我们一行代码就可以搞定服务器验证,而不使用框架的话我们就得自己实现验证的工具类了。

解决token调取上限问题

其实在之前的操作中一直隐藏着一个很大的问题,那就是AccessToken的问题,因为调用任何接口基本上都要用到AccessToken,但是每调用一次产生的AccessToken两小时后自动失效,就要重新调用,也许你会说,两个小时足够了啊,可是我们进行本地调试的时候,免不了重启服务器,这样AccessToken就会被刷新,所以很可能会出现一个AccessToken调取达到上限的问题,因为AccessToken的调用每天是有限制的,所以,这里对AccessToken采用硬编码。

也就是将调取得到的AccessToken进行硬编码,等到两个小时之后再次获取,使用框架获取AccessToken是这样的

String accessToken = iService.getAccessToken();

所以我这里新建一个MyWxService去继承WxService

/*** 继承自WxService以便修改响应方法* 比如对token的存储*/
public class MyWxService extends WxService {@Overridepublic String getAccessToken() throws WxErrorException {/*** token每天调取上限位2000次* 为避免达到上限* 将获得的token以硬编码方式存储* 一个token的使用时长有两个小时左右*///开发测试采用,两小时过后需要调用上线采用的方法刷新获取新的tokenreturn "12_2sztWZDG-06oyyQ5ObBFwW1TiN3LibX7nJ1FCoxLfVpj0TOdu0YLfwQHpCvZTIgi0mavu0B9D0wPQ3DA98e2lTGTB0gQLWHftgVLk1WnKcHCeSgDluza-tUzYKxxZqWDLImTwcjg1bnuy9yqCYAbACAUQS";//正常上线采用
//        return super.getAccessToken();}
}

需要获取AccessToken的话就是用新创建的MyWxService调用,也就是这样

IService iService = new MyWxService();
String accessToken = iService.getAccessToken();

如此一来就可以解决AccessToken调取上限问题。使用了框架之后对于公众号的具体业务开发,比如接收消息,响应消息或者用户管理等都变得非常简单了,剩下的就是看你的具体需求了。

根据你的需求,查看wx-tools的技术文档,实现具体的业务逻辑,就是你接下来要做的事了,本来想再举几个wx-tools的使用例子,可是人家的文档上已经写的很详细,所以就没必要再写了。

所以嘞,仔细看文档,仔细看文档,仔细看文档!!!

微信公众号号开发小记(六)使用开源框架开发相关推荐

  1. 微信公众帐号开发教程第7篇-文本消息中换行符的使用

    本篇文章主要介绍在文本消息中使用换行符的好处以及如何使用换行符. 最近一个月虽然抽不出时间写博客,但却一直在认真答复大家提出的问题.收到这么多的回复.关注和答谢,还是蛮有成就感的,让我觉得做这件事越来 ...

  2. [031] 微信公众帐号开发教程第7篇-文本消息中换行符的使用

    本篇文章主要介绍在文本消息中使用换行符的好处以及如何使用换行符. 最近一个月虽然抽不出时间写博客,但却一直在认真答复大家提出的问题.收到这么多的回复.关注和答谢,还是蛮有成就感的,让我觉得做这件事越来 ...

  3. 十七:微信公众帐号开发-文本消息中换行符的使用

    此篇文章为转载 本篇文章主要介绍在文本消息中使用换行符的好处以及如何使用换行符. 最近一个月虽然抽不出时间写博客,但却一直在认真答复大家提出的问题.收到这么多的回复.关注和答谢,还是蛮有成就感的,让我 ...

  4. 微信公众帐号开发教程第1篇-引言(转)

    接触微信公众帐号已经有两个多月的时间了,在这期间,除了陆续完好个人公众帐号xiaoqrobot以外,还带领团队为公司开发了两个企业应用:一个是普通类型的公众帐号,还有一个是会议类型的公众帐号.经过这3 ...

  5. 微信公众帐号开发教程第6篇-消息及消息处理工具的封装

    本篇内容主要讲解如何将微信公众平台定义的消息及消息相关的操作封装成工具类,方面后期的使用  官方文档 接下来要做的就是将消息请求.回复中定义的消息进行封装,建立与之对应的Java类(Java是一门面向 ...

  6. [041] 微信公众帐号开发教程第17篇-应用实例之智能翻译

    内容概要 本篇文章为大家演示怎样在微信公众帐号上实现"智能翻译",本例中翻译功能是通过调用"百度翻译API"实现的.智能翻译是指用户随意输入想要翻译的内容(单词 ...

  7. 如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情。

    本文重点介绍如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情.部分代码来自:FreeEIM 至于如何识别用户发送的是符号表情,就不在此讲解了,留给大家一点学习思考的空间.我只是给大家一个提 ...

  8. 微信公众帐号开发教程第16篇-应用实例之历史上的今天

    内容概要 本篇文章主要讲解如何在微信公众帐号上实现"历史上的今天"功能.这个例子本身并不复杂,但希望通过对它的学习,读者能够对正则表达式有一个新的认识,能够学会运用现有的网络资源丰 ...

  9. [032] 微信公众帐号开发教程第8篇-文本消息中使用网页超链接(转)

    本文主要介绍网页超链接的作用以及怎样在文本消息中使用网页超链接. 网页超链接的作用 我想但凡是熟悉HTML的朋友,对超链接一定不会陌生.而今天我们要讨论和使用的仅仅是超链接中的当中一种---网页超链接 ...

  10. 微信公众帐号开发教程第13篇-图文消息全攻略

    引言及内容概要 已经有几位读者抱怨"柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用",好吧,我错了,原本以为把基础API封装完.框架搭建好,再给出一个文本 ...

最新文章

  1. C/C++代码静态检查工具PC-lint在VS2008开发环境中的安装配置和使用
  2. Android Studio 第一次新建Android Gradle项目超级慢的解决方案
  3. angular 发布订阅
  4. 可变参数__VA_ARGS__使用和va_list使用小结
  5. 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位
  6. ajax的url怎么将后缀补上_蜂蜜杏仁怎么做?杏仁和蜂蜜腌制方法
  7. AppCompat是什么?
  8. c++程序内嵌lua字节码
  9. Paraview源码解析2:vtkArrowGlyphFilter类
  10. 华为HG8145C获取超级密码
  11. 微信分享功能(weixin-js-sdk)
  12. Fuzzy set基本介绍(1)
  13. python按某列拆分excel表格_把一张Excel表按照固定列分成不同工作薄的小白方法...
  14. 解决微信内红域名无需申诉过白
  15. GPU硬件结构和编程模型(源于nvidia的CUDA文档)
  16. 【C语言】图像处理-揭秘电影特效,随心所欲,合成图像
  17. cmd chcp命令切换字符格式
  18. 【Mybatis】出现The error may involve defaultParameterMap错误
  19. C#设计模式——组合模式(Composite Pattern)
  20. Exception in thread “main“ java.lang.NoSuchMethodError: scala.Predef$

热门文章

  1. java 微信公众号微信支付
  2. java幸运观众抽取_Java利用数组随机抽取幸运观众如何实现
  3. mysql随机抽样方法_MySQL中随机抽样
  4. qt qtableview 刷新列表_qt中Qtableview的用法
  5. as几个常用模拟器连接命令
  6. c语言 游程编码,游程编码C语言.doc
  7. Rect类基本函数使用
  8. VS2013 IDE C#生成CodeMap
  9. css文本样式(一):css字体样式
  10. mysql类exadata功能_一些有用的Exadata诊断命令