代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
微信公众平台API的Java通讯实现
作者:
舞维天下
/ 发布于
2013/7/19
/
1179
package org.marker.weixin; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Writer; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.marker.weixin.msg.Msg; import org.marker.weixin.msg.Msg4Event; import org.marker.weixin.msg.Msg4Image; import org.marker.weixin.msg.Msg4Link; import org.marker.weixin.msg.Msg4Location; import org.marker.weixin.msg.Msg4Music; import org.marker.weixin.msg.Msg4Text; /** * 处理微信服务器请求的Servlet URL地址:http://xxx/weixin/dealwith.do * * 注意:官方文档限制使用80端口哦! * * @author marker * @blog www.yl-blog.com * @weibo http://t.qq.com/wuweiit */ public class WinXinServlet extends HttpServlet { private static final long serialVersionUID = 1L; //TOKEN 是你在微信平台开发模式中设置的哦 public static final String TOKEN = ""; /** * 处理微信服务器验证 * * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String signature = request.getParameter("signature");// 微信加密签名 String timestamp = request.getParameter("timestamp");// 时间戳 String nonce = request.getParameter("nonce");// 随机数 String echostr = request.getParameter("echostr");// 随机字符串 // 重写totring方法,得到三个参数的拼接字符串 List<String> list = new ArrayList<String>(3) { private static final long serialVersionUID = 2621444383666420433L; public String toString() { return this.get(0) + this.get(1) + this.get(2); } }; list.add(TOKEN); list.add(timestamp); list.add(nonce); Collections.sort(list);// 排序 String tmpStr = new MySecurity().encode(list.toString(), MySecurity.SHA_1);// SHA-1加密 Writer out = response.getWriter(); if (signature.equals(tmpStr)) { out.write(echostr);// 请求验证成功,返回随机码 } else { out.write(""); } out.flush(); out.close(); } /** * 处理微信服务器发过来的各种消息,包括:文本、图片、地理位置、音乐等等 * * */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { InputStream is = request.getInputStream(); OutputStream os = response.getOutputStream(); @SuppressWarnings("unused") Session session = new Session(is, os) { @Override public void onTextMsg(Msg4Text msg) { System.out.println(msg.getToUserName()); System.out.println("收到消息"+msg.getContent()); //回复一条消息 Msg4Text reMsg = new Msg4Text(); reMsg.setFromUserName(msg.getToUserName()); reMsg.setToUserName(msg.getFromUserName()); reMsg.setCreateTime(msg.getCreateTime()); reMsg.setMsgType(Msg.MSG_TYPE_TEXT);//设置消息类型 reMsg.setContent("呵呵,谢谢您给我发消息"); reMsg.setFuncFlag("0"); callback(reMsg);//回传消息 } @Override public void onImageMsg(Msg4Image msg) { System.out.println("收到图片"+msg.getPicUrl()); } @Override public void onEventMsg(Msg4Event msg) { String eType = msg.getEvent(); if(Msg4Event.SUBSCRIBE.equals(eType)){ System.out.println("关注人:"+msg.getFromUserName()); }else if(Msg4Event.UNSUBSCRIBE.equals(eType)){ System.out.println("取消关注人:"+msg.getFromUserName()); }else{//点击:暂时内测 System.out.println("反正有事件推过来"); } } @Override public void onLinkMsg(Msg4Link msg) { System.out.println("收到URL:"+msg.getUrl()); } @Override public void onLocationMsg(Msg4Location msg) { System.out.println("收到地理位置消息:"); System.out.println("X:"+msg.getLocation_X()); System.out.println("Y:"+msg.getLocation_Y()); System.out.println("Scale:"+msg.getScale()); } @Override public void onErrorMsg(int errorCode) { // TODO Auto-generated method stub } }; } }
试试其它关键字
微信
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
舞维天下
贡献的其它代码
(
4
)
.
基于控制台的RPG游戏实现
.
Java NIO网络编程
.
android文件管理
.
微信公众平台API的Java通讯实现
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3