微信接口,请问这个xml参数如何接收

徐迎龙 发布于 2013/11/27 08:26
阅读 13K+
收藏 0

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。各消息类型的推送XML数据包结构如下。

文本消息

<xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>
微信接口,请问这个xml参数如何接收,就是不知道参数名称是什么,难道request.getParameter("XML") 这样吗?
加载中
0
苏珊大妈
苏珊大妈
// xml请求解析
Map<String, String> requestMap = MessageUtil.parseXml(request);

我使用的是dom4j来解析XML,然后把解析出来的数据放在一个MAP中。

/**
     * 解析微信发来的请求(XML)
     * 
     * @param request
     * @return
     * @throws Exception
*/
@SuppressWarnings("unchecked")
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
        // 将解析结果存储在HashMap中
        Map<String, String> map = new HashMap<String, String>();

        // 从request中取得输入流
        InputStream inputStream = request.getInputStream();
        // 读取输入流
        SAXReader reader = new SAXReader();
        Document document = reader.read(inputStream);
        // 得到xml根元素
        Element root = document.getRootElement();
        // 得到根元素的所有子节点
        List<Element> elementList = root.elements();

        // 遍历所有子节点
        for (Element e : elementList)
            map.put(e.getName(), e.getText());

        // 释放资源
        inputStream.close();
        inputStream = null;
        return map;
}






徐迎龙
徐迎龙
非常感谢,直接复制你的代码就可以用了
1
如梦技术
如梦技术

使用这个吧 http://www.oschina.net/p/wechat-java-sdk

省时省心省力!

徐迎龙
徐迎龙
谢谢,我先收藏一下,这个项目先就想用jsp测试一下
0
小薇
小薇
http://50vip.com/blog.php?id=62
0
Ken5233
Ken5233
查看官方api吧 哈哈
0
uemc
uemc

http://my.oschina.net/u/168245/blog/261072

Java SDK

0
程序小生
程序小生
请问PHP 的怎么弄???
返回顶部
顶部