微信开发系列(五)_消息,事件的处理

来自微信端的事件可以有多种

1:文本消息

2:图片消息

3:语音消息

4:点击按钮事件

5:扫码事件等等

用户发送的消息或者事件  都是以xml的形式发送给我们开发者的(也就是服务器端) 我们也是以xml的格式返回去的

这是开发者文档点击打开链接


所有首先 我们得把用户的消息给获取并解析了(我给出一个工具类类  )

可以看出就是把传过来的request直接传进去就ok了

 public static Map<String,String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException{
	  //用List列表的方式来解析xml,详细见http://www.jb51.net/article/42323.htm
	  Map<String, String> map =new HashMap<String,String>();  //把客户端传过来的xml数据转换成map格式的数据
	  
	  SAXReader reader =new SAXReader();
	  
	  
	  InputStream ins=request.getInputStream();//从request中获取输入流
	  Document doc =reader.read(ins);// 弄成文本???Xml
		
	  Element root =doc.getRootElement();
	  List<Element> list =root.elements();//获取子节点元素
		//list相当于一个变量,List则是标明是何种变量,这样来理解
		for(Element e :list){
		   map.put(e.getName(), e.getText());	                 //将遍历的结果保存到集合中
		}
	    ins.close();
	    return map;
	  
  }
然后当然就是获取map里面的数据了

所以我们得根据他们的类型(是文字 还在图片 还是点击 ,,)

Map<String ,String> map =BaseMessageUtil.xmlToMap(req);  //把服务器传过来的xml格式的数据转换成map
			String fromUserName =map.get("FromUserName");//发送方帐号(一个OpenID)
			String toUserName =map.get("ToUserName");//开发者微信号
			String msgType =map.get("MsgType");//text
			String content =map.get("Content");//文本消息内容
请注意 图片的msgtype是image

             文字的msgtype是text

             语音的msgtype是voice

             .....................

但是事件的msgtype都是event (包括点击事件click 关注事件 扫码事件) 区分他们的唯一标示是 他们的map里面有一个event字段 可以将他们区分

获取 String eventType = map.get("Event");   //事件的类型



好了事件获取完毕就开始一一回击吧

刚刚说过 回复也要包装成xml返回的

所以制作完回复消息后就要转换成xml了再输出到微信端【out.print(message);】

消息的制作就以图文消息为例

首先新建一个基本消息父类

package com.po;

public class BaseMessage {
	private String ToUserN
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值