用java开发微信公众号

作者: 计算机网络技术  发布:2019-11-04

用java开辟Wechat公众号:选取和消沉回复普通消息(三卡塔 尔(阿拉伯语:قطر‎,java公众

上篇说完了何等对接Wechat群众号,本文说一下Wechat群众号的最底子效:普通音信的选用和东山再起。聊到经常音讯,那么怎样是Wechat民众号所定义的平日性新闻呢,Wechat开垦者文书档案中涉嫌的吸取的常见新闻包蕴如下几类:

1.文本音信
2.图片音讯
3.语音音信
4.录像新闻
5.小录制新闻
6.地理地方音信
7.链接音信(被动回复的新闻卡塔 尔(英语:State of Qatar)

被动回复的家常音讯包含:

1.回复文本新闻
2.过来图片新闻
3.复苏语音音信
4.回复录制新闻
5.回复音乐音讯
6.回复图像和文字音信

实则选用音信和消沉回复新闻这两个动作是不分家的,那自然就是叁个相互场景,日常景色正是公众号经过分析选拔到的消息,会提交对应的过来。当然也无法消灭有个别特别事情了。

怎么吸收音讯

要收下的这7中国国投息的xml格式这里就不列出了,请到官方文书档案查看,有具体的格式定义和质量表达。格式非常轻松,基本共有属性包罗ToUserName、FromUserName、CreateTime、MsgType、MsgId,何况各个等级次序有和好特别的习性。

观望这里,其实就很清楚了,选用消息的进程实际上正是收获post央浼的那个xml,然后对这么些xml实行深入分析的经过。post诉求的进口依遗闻先涉嫌的Wechat大伙儿号对接的老大地方,整个公众号的具备供给都会走那一个进口,只是连接时是get央求,其余处境下是post央浼。管理xml这里用了dom4j,xml管理代码如下,在servlet的post方法中调用parseXml方法就可以:

public static Map parseXml(HttpServletRequest request) throws Exception {
        // 将解析结果存储在HashMap中
        Map map = new HashMap();

        // 从request中取得输入流
        InputStream inputStream = request.getInputStream();
        /*
         * 读取request的body内容 此方法会导致流读取问题 Premature end of file. Nested exception:
   * Premature end of file String requestBody =
   * inputStream2String(inputStream); System.out.println(requestBody);
   */
        // 读取输入流
        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;
    }

    private static String inputStream2String(InputStream is) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        int i = -1;
        while ((i = is.read()) != -1) {
            baos.write(i);
        }
        return baos.toString();
    }

什么样被动回复音信

下边我依照那样贰个逻辑来演示构造回复的音信,接纳到文本音信"文本",回复文本音信;选择到“图片”,回复图片消息;选择到“语音”,回复语音音讯;选择到“摄像”,回复摄像音讯;选用到“音乐”,回复音乐音信;采取到“图像和文字”,回复图像和文字音信。

以平复文本音信作为验证:

<xml>
<ToUserName><![CDATA[发消息的人,即订阅者]]></ToUserName>
<FromUserName><![CDATA[微信公众号本身]]></FromUserName>
<CreateTime>消息创建时间(整形)</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[消息内容]]></Content>
</xml>

前两脾天性能够从选取的音讯中获得,选择的消息格式如下:

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a text]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>

内部选用新闻格式中的ToUserName正是过来新闻的FromUserName,选用新闻格式中的FromUserName正是恢复音信的ToUserName。

Create提姆e为消息发送的时间戳。MsgType为音信类型,文本为text。Content为新闻内容。

切实每意气风发类别型音讯的复原,即是布局此体系型的xml格式内容,格式一模二样,只是音乐、录制、语音、图像和文字格式相对于文本音信构造的xml内容有一点点复杂一点。具体可参考官方文书档案。这里不做赘述,相信各位大器晚成看便通晓。

黄金年代律,选用消息可以参照这里。

代码已更新到github

上篇说罢了怎么样对接Wechat民众号,本文说一下Wechat民众号的最基本成效:...

本文由今晚买四不像发布于计算机网络技术,转载请注明出处:用java开发微信公众号

关键词: