转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/45044051
http://www.llwjy.com/blogdetail/6c8ff7985249e119b6b683f9a65d6597.html
个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~
-------------------------------------------------------------------------------------------------
在上一篇博客中,我们已经介绍了微信服务器的配置,这篇我们就介绍以下如何针对微信公共号做开发。由于自己现在的微信公共号是个人的,所以现在只能做一些简单的被动回复,等几天公司的公共号到手再开始其他功能的介绍。
在上一篇博客中,在WeiXinServlet类中实现了对服务器时效性的验证,验证通过之后,这些代码就可以不用了,为了之后切换微信公共号,建议只注释掉即可。
接收消息
在服务器接收到请求之后,解析request提交过来的xml,获取相关信息,代码实现如下:
private HashMap<String, String> parseRequestXml(HttpServletRequest request) throws Exception{
// 将解析结果存储在HashMap中
HashMap<String, String> map = new HashMap<String, String>();
Document document = XmlUtil.createFromRequest(request);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList){
map.put(e.getName(), e.getText());
}
return map;
}
在map中,我们通过map.get("MsgType")可以获取到用户发送消息类型(具体xml结构,参照开发者文档中的
接收消息--接收普通消息),对于不同的消息类型,选择不同的分支,当然这里就先对关注事件和文本消息做响应,其他的部分在之后的文档中介绍。根据消息类型不同选择不同的分支,代码实现如下:
public String reply(HttpServletRequest request) {
try {
HashMap<String, String> map = parseRequestXml(request);
if (map == null) {
return "";
}