微信怎么绑定消息服务器吗,fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...

fastweixin

作者:peiyu

ba957e3812d38374267f502c38074bf1.png

weibo-%40peiyu-red.svg

badge.svg

master.svg?style=svg

Join%20Chat.svg

license-Apache%202-4EB1BA.svg

快速搭建微信公众平台服务器

简单封装了所有与微信服务器交互的消息:文本消息、图片消息、图文消息等等

提供了基于springmvc以及基于servlet框架的控制器,集成了微信服务器绑定、监听所有类型消息的方法

使用时继承,重写即可,十分方便

支持高级接口的API,框架中提供MenuAPI、CustomAPI、QrcodeAPI、UserAPI、MediaAPI、OauthAPI用于实现所有高级接口功能,使用极其简单

内部实现token过期自动刷新,不用再关注token细节

支持微信消息安全模式,但由于jdk的限制,导致想使用安全模式,必须修改jdk内部的jar包

官方网站下载:

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt

如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件

如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件

详细文档(感谢luozhuang 的整理)

基于springmvc项目的集成方法

@RestController

@RequestMapping("/weixin")

public class WeixinController extends WeixinControllerSupport {

private static final Logger log = LoggerFactory.getLogger(WeixinController.class);

private static final String TOKEN = "myToken";

//设置TOKEN,用于绑定微信服务器

@Override

protected String getToken() {

return TOKEN;

}

//使用安全模式时设置:APPID

//不再强制重写,有加密需要时自行重写该方法

@Override

protected String getAppId() {

return null;

}

//使用安全模式时设置:密钥

//不再强制重写,有加密需要时自行重写该方法

@Override

protected String getAESKey() {

return null;

}

//重写父类方法,处理对应的微信消息

@Override

protected BaseMsg handleTextMsg(TextReqMsg msg) {

String content = msg.getContent();

log.debug("用户发送到服务器的内容:{}", content);

return new TextMsg("服务器回复用户消息!");

}

/*1.1版本新增,重写父类方法,加入自定义微信消息处理器

*不是必须的,上面的方法是统一处理所有的文本消息,如果业务觉复杂,上面的会显得比较乱

*这个机制就是为了应对这种情况,每个MessageHandle就是一个业务,只处理指定的那部分消息

*/

@Override

protected List initMessageHandles() {

List handles = new ArrayList();

handles.add(new MyMessageHandle());

return handles;

}

//1.1版本新增,重写父类方法,加入自定义微信事件处理器,同上

@Override

protected List initEventHandles() {

List handles = new ArrayList();

handles.add(new MyEventHandle());

return handles;

}

}

基于servlet项目的集成方法

public class WeixinServlet extends WeixinServletSupport {

@Override

protected WeixinSupport getWeixinSupport() {

return new MyServletWeixinSupport();

}

}

//用户自行实现的微信消息收发处理器

public class MyServletWeixinSupport extends WeixinSupport {

private static final Logger log = LoggerFactory.getLogger(MyServletWeixinSupport.class);

@Override

protected String getToken() {

return "myToken";

}

@Override

protected BaseMsg handleTextMsg(TextReqMsg msg) {

String content = msg.getContent();

log.debug("用户发送到服务器的内容:{}", content);

return new TextMsg("服务器回复用户消息!");

}

}

web.xml配置

weixin

xxx.xxx.WeixinServlet

weixin

/weixin

基于Jfinal框架项目的集成方法

public class MyJfinalController extends Controller {

//用户自行实现的消息处理器

private WeixinSupport support = new MyServletWeixinSupport();

public void index() {

HttpServletRequest request = getRequest();

log.debug("method:{}", request.getMethod());

//绑定微信服务器

if ("GET".equalsIgnoreCase(request.getMethod().toUpperCase())) {

support.bindServer(request, getResponse());

renderNull();

} else {

//处理消息

renderText(support.processRequest(request), "text/xml");

}

}

}

Change Log

Why Use

Maven 项目引入

com.github.sd4324530

fastweixin

1.3.15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

炒菜机器人放食材的顺序_如果给你个做饭机器人,你会让它做些什么饭菜?

我曾去过一个从事人工智能软件开发的工程师家里,进她家,从进门开锁、开灯、烧开水、泡咖啡、扫地机、蒸饭、炖汤、洗碗机等基本上实现了智能控制。我笑着说,如果再有个机器人帮你炒菜,你就实现“家务自由”了!现在唯独…

服务器中文件设置密码,共享服务器文件权限怎么设置密码

共享服务器文件权限怎么设置密码 内容精选换一换该步骤必须在root用户下执行,若以普通系统用户登录,需要执行su切换到root用户下执行后续操作。ssh-keygen -t rsa过程中需要:(可选)输入保存的文件名,默认为在/root/.ssh/id_rsa目录…

antd 能自适应吗_react 基于antd表格自适应宽度显示。。。鼠标滑动显示详细内容解决办法...

最终效果内容如下创建公共组件获取表格宽度class EllipsisTooltip extends React.Component {constructor(props){super(props);this.state{visible: false,DtStyle:{},DtClass:,}}componentDidMount(){ this.getItemWidth() }getItemWidth()>{if(this.container){this.setS…

ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

js定时器怎么写?就是在特定时间执行某段程序复制代码 代码如下:$(function(){var handler function(){}var timer setInterval( handler , 1000);var clear function(){clearInterval(timer);}});我要在定时里面加一个页面跳转,然后在页面load的时候加…

ubuntu 禁用透明大页_MySQL InnoDB 透明页压缩(Page Compression)

MySQL InnoDB支持数据压缩,有两种数据压缩方式,第一种为表压缩,通常也称之为行格式压缩,另外一种是页压缩(Page Compression),又叫做透明页压缩(Transparent Page Compression),是一种页面级别的数据压缩&a…

vue读取服务器文件跨域,新版vue-cli模板下本地开发环境使用node服务器跨域的方法...

背景我们都知道浏览器有一个既核心也最基本的安全功能,即同源策略。同源分别是:协议,域名,端口。如果浏览器访问服务器不同源的话,就会访问不到数据。那开发中常常访问的服务器不同源,那么可以借助一个服务器当做中介来…

cairosvg在linux中的安装_直接用ISO文件在linux上安装新系统

Use Case-When you don’t have CD / DVD drive on your system.-You have Fedora DVD but your system has only a CD Drive.-You don’t want to waste time and resources in burning iso on optical media.Pre-requisites-You have a Fedora DVD iso or rescue cd iso.-You…

客户机服务器中的操作系统有哪些,操作系统中中间件的分类都有哪些呢?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼中间件是指系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序,分布式应用软件借助这种软件…

python函数后面两个括号_简单了解为什么python函数后有多个括号

这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一般而言,函数后面只有一个括号。如果看见括号后还有一个括号,说明第一个函数返…

一个账号可以登录几台机器_干货:一个PubMed账号可以有这么多用处!

且不说撰写一个综述类文章,就连平时的课题设计和汇报,都是动辄几十篇文献以上,那么,该如何管理这么多文献呢?笔者认为,一个PubMed账号足矣。我们都知道,在生物医药领域,PubMed这个文…

vuex 源码分析_前端入门之(vuex-router-sync解析)

前端入门之(vuex-router-sync解析)发布时间:2018-11-14 13:31,浏览次数:513, 标签:vuexroutersync前言:vue全家桶的内容我们已经研究过了vuex、vue-router,有兴趣的童鞋可以去看看我之前的两个系列的文章vuex源码解析一、vue-router全解析一,…

linux tomcat守护_linux-非root用户运行tomcat(示例代码)

# 前言:为什么要使用非root用户运行tomcatroot用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本 修改整个硬盘里的文件!所以最好不要使…

docker 拉取oracle_Docker 拉取 oracle 11g镜像配置-Go语言中文社区

话不多说开始记录docker拉取阿里的oracle11g 镜像并进行配置,用pl/sql 可以登录为最终结果navicat连接是在最后一步但是根据这个进行配置会有一些问题,所以写这篇记录一下,希望可以帮助其他人开始:①、开始拉取镜像-执行命令&…

投票选举 算法_区块链主流共识算法一文全通

在每种伟大的加密货币背后,都有着一个伟大的共识算法。没有共识算法是完美的,但是它们各有千秋。在加密世界中,需要共识算法来防止重支付。这是迄今为止一些最流行的共识算法的简要介绍,从区块链到DAG以及介于两者之间的所有内容。…

clion 引用dll_用CLion实现本地方法并给java调用

众所周知,PHP是世界上最好的语言,java排第二,因为PHP无所不能。但是在某些场景下java还要调用本地方法来提高执行的效率,故java只能排第二。java提供了jni(Java Native Interface)来实现在java中调用本地方法。本地方法在java中用…

mysql没有创建数据库的权限设置_mysql 创建数据库,用户并给用户设置权限

mysql创建数据create database dataBaseName default charset utf8 collate utf8_general_ci; --创建数据库并设置字符集创建用户create user 用户名% identified by 密码; -- ‘%‘ 是该用户可以在任何机器上登录查询用户select user,host.password from mysql.user;给用户设置…

mysql 自定义序列号_在mysql中怎样设置,才能自动添加序列号

事件发生的线程ID(THREAD_ID)活动名称(EVENT_NAME)起止时间戳以及事件的总持续时间(TIMER_START,TIMER_END 和 TIMER_WAIT)在事件停止之前完成的工作单位和预估工作单位(WORK_COMPLETED,WORK_ESTIMATED)因此,当自动重新加入过程开始时&#x…

golang mysql封装_自己封装的golang 操作数据库方法

这个是我用Go写的第一个东东,可能还存在些BUG没有测试到。这里主要是提供一个参考。各位可以改写成自己的风格。在命令行下输入如下两条命令,进行安装go get github.com/male110/SimpleDbgo install github.com/male110/SimpleDbGo语言的数据库操作&…

mysql历史数据备份_Mysql存储过程历史表备份

原文:Mysql存储过程历史表备份应用背景SCADA采集系统需要将实时数据存入历史表。问题1:如何更简单的添加历史数据?2.海量历史数据,比如年数据,如何快速筛选 画曲线?利用mysql的事件,每小时存一次采集数据&a…

如何用js给图片重置宽_如何用js给老婆每天发情话

作者: 加百利真胖原文:https://juejin.cn/events/all一、引言最近家里添了小孩,在家带娃陪产了一些天,深刻体会到老婆带孩子的辛苦。工作的时候不能在家陪她,就想着写个程序,每天固定在固定时间给她发一些情话,好让她在…