java 解析微信接收推送事件的xml java推送微信消息
转载
一、简要说明
在博文《Java模拟登录微信公众平台,主动推送图文消息给用户》中提到使用Java语言登录微信公众平台,然后发送图文消息给用户,基本可以符合使用要求,但是在今年10月23日,微信公众平台的界面有所变化,所以,上一篇博文的代码不再适用,很多朋友留言,不能使用了怎么办,这篇文章针对新版本做了处理,并且加入了新的功能,代码上要感谢trprebel这位朋友。
二、代码功能和要求
*.new Weixin()对象,先登录再取粉丝数和者发消息;
*.发消息需要设置post参数中的content;
*.内容中的超链接可以直接发送不用使用标签;
*.经过我(trprebel)修改之后,此份代码可在2013年11月之后使用;
*.我只做了获取粉丝列表和发送消息,其他部分未做;
*.理论上可以获取到粉丝的地址,签名等一切你登陆可以得到的信息;
*.另外可能需要你在本机先登陆过至少一次微信公众平台获取SSL证书;
*.此份代码作者较多,函数前面都有作者名,我只修改了登陆,获取粉丝列表和发送消息;
*.其他代码可能已经不能用了但我并没有删除,方便大家扩展,我做的也比较粗糙,没整理;
*.另外,腾讯3天之内又加了一条限制,粉丝24小时之内没有主动说话,微信公众平台不能主动与其说话,官方平台登陆也不行;
使用到的库:commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-lang.jar、commons-logging-1.0.4.jar、fastjson-1.1.15.jar、gson-2.2.4.jar、httpclient-4.1.3.jar、httpcore-4.1.4.jar、jsoup-1.5.2.jar
环境:JDK1.6
三、代码下载
使用的库请自己下载,源代码如下:
如果使用有任何的问题,请直接回复博文即可...
四、核心代码和说明
Weixin.java模拟请求的链接及结构
public final static String HOST = "http://mp.weixin.qq.com" ;
public final static String LOGIN_URL = "http://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN" ;
public final static String INDEX_URL = "http://mp.weixin.qq.com/cgi-bin/indexpage?t=wxm-index&lang=zh_CN" ;
public final static String SENDMSG_URL = "https://mp.weixin.qq.com/cgi-bin/singlesend" ;
public final static String FANS_URL = "http://mp.weixin.qq.com/cgi-bin/contactmanagepage?t=wxm-friend&lang=zh_CN&pagesize=10&pageidx=0&type=0&groupid=0" ;
public final static String LOGOUT_URL = "http://mp.weixin.qq.com/cgi-bin/logout?t=wxm-logout&lang=zh_CN" ;
public final static String DOWNLOAD_URL = "http://mp.weixin.qq.com/cgi-bin/downloadfile?" ;
public final static String VERIFY_CODE = "http://mp.weixin.qq.com/cgi-bin/verifycode?" ;
public final static String POST_MSG = "https://mp.weixin.qq.com/cgi-bin/masssend?t=ajax-response" ;
public final static String VIEW_HEAD_IMG = "http://mp.weixin.qq.com/cgi-bin/viewheadimg" ;
public final static String GET_IMG_DATA = "http://mp.weixin.qq.com/cgi-bin/getimgdata" ;
public final static String GET_REGIONS = "http://mp.weixin.qq.com/cgi-bin/getregions" ;
public final static String GET_MESSAGE = "http://mp.weixin.qq.com/cgi-bin/getmessage" ;
public final static String OPER_ADVANCED_FUNC = "http://mp.weixin.qq.com/cgi-bin/operadvancedfunc" ;
public final static String MASSSEND_PAGE = "http://mp.weixin.qq.com/cgi-bin/masssendpage" ;
public final static String FILE_MANAGE_PAGE = "http://mp.weixin.qq.com/cgi-bin/filemanagepage" ;
public final static String OPERATE_APPMSG = "https://mp.weixin.qq.com/cgi-bin/operate_appmsg?token=416919388&lang=zh_CN&sub=edit&t=wxm-appmsgs-edit-new&type=10&subtype=3&ismul=1" ;
public final static String FMS_TRANSPORT = "http://mp.weixin.qq.com/cgi-bin/fmstransport" ;
// public final static String CONTACT_MANAGE_PAGE =
// "http://mp.weixin.qq.com/cgi-bin/contactmanagepage";
public final static String CONTACT_MANAGE_PAGE = "http://mp.weixin.qq.com/cgi-bin/contactmanage" ;
public final static String OPER_SELF_MENU = "http://mp.weixin.qq.com/cgi-bin/operselfmenu" ;
public final static String REPLY_RULE_PAGE = "http://mp.weixin.qq.com/cgi-bin/replyrulepage" ;
public final static String SINGLE_MSG_PAGE = "http://mp.weixin.qq.com/cgi-bin/singlemsgpage" ;
public final static String USER_INFO_PAGE = "http://mp.weixin.qq.com/cgi-bin/userinfopage" ;
public final static String DEV_APPLY = "http://mp.weixin.qq.com/cgi-bin/devapply" ;
public final static String UPLOAD_MATERIAL = "https://mp.weixin.qq.com/cgi-bin/uploadmaterial?cgi=uploadmaterial&type=2&token=416919388&t=iframe-uploadfile&lang=zh_CN&formId=1" ;
/**
* 登录,登录失败会重复请求登录
*/
public void login() {}
/**
* 发送登录信息,记录cookie,登录状态,token等信息
*/
private boolean _login() {}
/**
* 从登录成功的信息中分离出token信息
*/
private String getToken(String s) {}
/**
* 获取首页
* @throws HttpException
* @throws IOException
*/
public void index() throws HttpException, IOException {}
/**
* 登出操作
* @throws HttpException
* @throws IOException
*/
public void logout() throws HttpException, IOException {}
/**
* 获取验证码
* @throws HttpException
* @throws IOException
*/
public InputStream code() throws HttpException, IOException {}
/**
* 获取粉丝列表,返回粉丝数量,出错则返回-1
*/
public int getFans() {}
/**
* 从返回文本中提取粉丝数量
*/
private int parseFansCount(String text) {}
/**
* 解析粉丝列表,将粉丝列表存入List<fan>
*/
private int parseFans(String text) {}
/**
* <strong>群发消息</strong>
* 返回码说明
* 0:发送成功
* 64004:今天的群发数量已到,无法群发
* -20000:请求被禁止,请仔细检查token是否合法
* 可通过msgSendCode取得发送状态码
*/
public boolean msgSend(MsgForm form, MsgType type) {}
/**
* 向粉丝发送消息,默认发送第二个粉丝,想不受限制的群发可以循环向粉丝列表中的粉丝发送消息
*/
public boolean sendMsg( int i) {}
public void updateImg(ImgFileForm form) {}
/**
* 页面跳转
*/
public void redirect(String url) {}
//使用样例说明
public static void main(String[] args) {
String LOGIN_USER = "knight.ding@gmail.com" ; // 此为上一任作者的用户名和密码,截止到我最后用发现还能用
String LOGIN_PWD = "AAbb1122" ;
Weixin wx = new Weixin(LOGIN_USER, LOGIN_PWD);
wx.login();
wx.getCookiestr();
// ImgFileForm form = new ImgFileForm();
// form.setUploadfile(new File("D:Dataimage4.jpg"));
// wx.updateImg(form);
System.out.println( "粉丝数:" + wx.getFans());
wx.sendMsg( 1 ); // 像好友列表中的第几个好友发消息,从0开始
}
|
---
Enjoy~~~如果能帮助到你,请回复博文或者分享给他人,谢谢~
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。