微信开发就是这么简单
来源:互联网 发布:vb中truefalse什么意思 编辑:程序博客网 时间:2024/05/18 03:34
LiteWeixin介绍
LiteWeixin是一个开源的小型框架,与其说是框架倒不如说是将一些微信开发的常用的操作包装了起来,让开发者不再面对着xml的解析与生成,而能够有更多的精力来面对业务逻辑
LiteWeixin接入步骤
- 使用LiteWeixin接入微信开发非常简单,首先先引入LiteWeixin的jar包和xstream的jar包,将他们放入WEB-INF下面的lib文件夹下面,目录如下:
- 在web.xml文件里面加入如下所示的监听器:
<listener> <listener-class>cn.karent.listener.ContextListener</listener-class> </listener>
- 创建一个类继承自LiteWeixin,并重写里面响应的方法,如下所示:
package com.chxxi614.servlet;import cn.karent.bean.common.BaseMessage;import cn.karent.bean.common.TextMessage;import cn.karent.bean.req.EventMessage;import cn.karent.bean.req.ImageMessage;import cn.karent.bean.req.LinkMessage;import cn.karent.bean.req.LocationMessage;import cn.karent.bean.req.VideoMessage;import cn.karent.bean.req.VoiceMessage;import cn.karent.servlet.LiteWeixin;public class Main extends LiteWeixin{ /** * 处理文本消息 */ @Override public BaseMessage textMessage(TextMessage text) { return super.textMessage(text); } /** * 处理图片消息 */ @Override public BaseMessage imageMessage(ImageMessage image) { // TODO Auto-generated method stub return super.imageMessage(image); } /** * 处理声音消息 */ @Override public BaseMessage voiceMessage(VoiceMessage voice) { // TODO Auto-generated method stub return super.voiceMessage(voice); } /** * 处理链接消息 */ @Override public BaseMessage linkMessage(LinkMessage link) { // TODO Auto-generated method stub return super.linkMessage(link); } /** * 处理地理位置消息 */ @Override public BaseMessage locationMessage(LocationMessage location) { // TODO Auto-generated method stub return super.locationMessage(location); } /** * 处理视频消息 */ @Override public BaseMessage videoMessage(VideoMessage video) { // TODO Auto-generated method stub return super.videoMessage(video); } /** * 处理事件消息 */ @Override public BaseMessage eventMessage(EventMessage event) { // TODO Auto-generated method stub return super.eventMessage(event); }}
里面的参数是相应的bean,例如文本消息对应的xml文件如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
它对应的bean是TextMessage,看下TextMessage里面的定义:
package cn.karent.bean.common;/** * 文本消息 * @author wan */public class TextMessage extends BaseMessage{ public TextMessage() { setMsgType("text"); } private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; }}package cn.karent.bean.common;/** * model基类 * @author wan */public class BaseMessage { private String ToUserName; private String FromUserName; private long CreateTime; private String MsgType; private int FuncFlag; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } public int getFuncFlag() { return FuncFlag; } public void setFuncFlag(int funcFlag) { FuncFlag = funcFlag; }}
同理ImageMessage也是一样:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> </xml>
它对应的bean ImageMessage如下:
package cn.karent.bean.req;import cn.karent.bean.common.BaseMessage;/** * 请求之图片消息 * @author wan */public class ImageMessage extends BaseMessage { private String PicUrl; private String MediaId; public String getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; }}
- 在src目录下面创建一个weixin.xml文件,在里面填入如下内容:
<?xml version="1.0" encoding="UTF-8"?><weixin> <token>chxxi614</token> <core>com.chxxi614.servlet.Main</core></weixin>
其中token标签是接入微信开发所需要的token, <core></core>
标签里面的内容是指定我们刚刚创建的那个继承自LiteWeixin的类
注意事项
前面说过在我们指定的Main类的里面每个请求对应着一个方法,每个请求的数据对应着方法参数里面的java bean,我们向微信服务回应消息也对应着一个java bean,例如回应图片消息对应的xml:
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>
这个xml对应的java bean如下:
package cn.karent.bean.resp;import cn.karent.bean.common.BaseMessage;/** * 回复图片消息 * @author wan */public class ImageMessage extends BaseMessage{ public ImageMessage() { setMsgType("image"); } private Image Image; public Image getImage() { return Image; } public void setImage(Image image) { Image = image; }}package cn.karent.bean.resp;public class Image { private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; }}
我们不要管xml怎么响应的,我们只要return 相应的bean即可(注意,这些bean都是在LiteWeixin里面定义好了的),更多的细节可以参考LiteWeixin里面的源码。
使用LiteWeixin回复文本和图片消息
先引入LiteWeixin.jar和xstream-1.3.1.jar到lib文件夹下面(LiteWeixin.jar的下载地址),然后使用刚刚创建的Main类,在对应的textMessage和imageMessage中加入如下代码:
public BaseMessage textMessage(TextMessage text) {System.out.println("I'm text message, content:" + text.getContent()); TextMessage resp = new TextMessage(); initResponseData(text, resp); resp.setContent("hello, I'm liteWeixin text message"); return resp; } /** * 处理图片消息 */ @Override public BaseMessage imageMessage(ImageMessage image) { // TODO Auto-generated method stubSystem.out.println("image Message:" + image.getFromUserName() + "\t" + image.getMediaId()); TextMessage text = new TextMessage(); initResponseData(image, text); text.setContent("hello, I'm LiteWeixin image Message"); return text; }
然后使用刚刚创建的weixin.xml文件,目录结构如下:
最后别忘了在web.xml里面注册一个监听器:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <listener> <listener-class>cn.karent.listener.ContextListener</listener-class> </listener></web-app>
微信上面的配置
因为所以的接入都是LiteWeixin帮我们配置好了,LiteWeixin默认的入口是叫做entry,例如我们创建的项目名叫做testweixin,那么完整的项目配置路径应该是
http://域名/testweixin/entry
这个就是我们的URL,至于token,那就是我们在weixin.xml文件<token></token>
当中配置的内容
看效果
结尾
LiteWeixin应该不算是一个框架吧,只是将一些微信开发公共的部分抽取了出来,最后祝大家元旦快乐!
LiteWeixin的项目地址:https://github.com/karentwan/LiteWeixin
- 微信开发就是这么简单
- 飞信,原来就是这么简单
- 微信公众平台自定义菜单开发(原来这么简单)
- C#开发微信公众平台-就这么简单
- 微信公众号开发,原来这么简单?[java框架]
- 生活就是这么简单
- 记忆就是这么简单
- 快乐,就是这么简单
- 快乐就是这么简单
- 就是这么简单
- 多线程,就是这么简单!
- android应用 小试牛刀 开发自己的应用程序就是这么简单
- C#开发,汉语变拼音就是这么简单
- 微信分享就这么简单
- 企业搜索,就是这么简单!
- 线程管理 就是这么简单
- 防癌:就是这么简单!
- 其实幸福就是这么简单
- imooc-1
- jvm工作机制
- EditText界面显示效果疑问?
- FZU1075 之 分解素因子
- Java Socket应用
- 微信开发就是这么简单
- 通用 Intent
- 火狐浏览器使用RESTClient发送post请求方法
- 读者推荐的学习资料是大学的经典课程
- Ubuntu 16.04安装Matlab 2016b教程
- IO对文件的读写
- 90%的人不知道的微信隐藏功能
- 哪位大哥能得到这个快递单号查询apk的源码吗?
- 2016.12.30初中部模拟赛A组总结