微信公众平台搭建第三步:实现简单的信息回复

在成为开发者之后,我们便可以用微信提供的接口实现简单的数据通信了。

要解决的问题有两步:

1.获取微信服务器推送过来的用户信息

2.处理信息并将反馈信息推送到微信服务器


第一步中,微信推送过来的信息是发送过来的post请求,请求地址就是第二步中的地址,只不过方式是post,内容为一个包含用户发送的信息的xml。我们要做的就是获取这个xml,读取出其中每个元素值,代码如下


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("UTF-8");
  
		XmlParser xml = new XmlParser(request.getInputStream());//获取xml输入流并解析
		//以下变量的定义根据微信公众平台开发文档中给出的属性进行定义,这个五个属性是每种信息类型都有的基本属性
		String ToUserName = xml.getValueByName("ToUserName");
		String FromUserName = xml.getValueByName("FromUserName");
		String CreateTime = xml.getValueByName("CreateTime");
		String MsgType=  xml.getValueByName("MsgType");
		String MsgId = xml.getValueByName("MsgId");
	
		if(MsgType.equals("text"))//判断获取的信息是文本信息后进行回复,回复格式也是根据微信公众平台开发文档给出的定义
		{
		String Content = xml.getValueByName("Content");

		String txtMsg = "<xml>"
		 +"<ToUserName><![CDATA["+FromUserName+"]]></ToUserName>"
		 +"<FromUserName><![CDATA["+ToUserName+"]]></FromUserName> "
		 +"<CreateTime>"+12345678+"</CreateTime>"
		 +"<MsgType><![CDATA[text]]></MsgType>"
		 +"<Content><![CDATA[這是一條文本信息"+Content+"]]></Content>"
		 +"</xml>";
		
		response.getWriter().print(txtMsg);
		}
		else if(MsgType.equals("image"))//判断并回复图像信息
		{
			String PicUrl = xml.getValueByName("PicUrl");
			String MediaId = xml.getValueByName("MediaId");
			String txtMsg = "<xml>"
					 +"<ToUserName><![CDATA["+FromUserName+"]]></ToUserName>"
					 +"<FromUserName><![CDATA["+ToUserName+"]]></FromUserName> "
					 +"<CreateTime>"+12345678+"</CreateTime>"
					 +"<MsgType><![CDATA[text]]></MsgType>"
					 +"<Content><![CDATA[這是一條圖片信息 url="+PicUrl+" mediaId="+MediaId+" "+"]]></Content>"
					 +"</xml>";
					
			response.getWriter().print(txtMsg);
		}
}

以上两步只给出了处理文本信息和图像信息的方法,还有voice,location,video等格式,处理方式基本相同,请自己实践。

其中<![CDATA[内容]]>是xml标记,表示将内容部分进行原样输出,类似于html中的<pre> 标签,里面的内容保持原样。

其中的XmlParser是自己封装的读取xml的类,代码如下

import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

public class XmlParser {
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	DocumentBuilder builder = null;
	Document doc = null;
	
	public XmlParser(InputStream input)
	{
		
		try {
			builder = factory.newDocumentBuilder();
			doc = builder.parse(input);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	public String getValueByName(String name)
	{
		return doc.getElementsByTagName(name).item(0).getFirstChild().getNodeValue();
	}
}

将程序部署后便可以测试了,发送信息给该公共号,便会返回相应的信息。


新手入门,请多关照!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值