微信公众号开发处理客户端消息

使用客户端关注公众号并发送消息,你会发现配置成功是在doGet里面,但是处理消息是在doPost。

微信服务端处理客户消息:

1、接受客户消息

2、转发给自定义服务器,但是转发方式为一个xml流。

获取:

    ServletInputStream is = request.getInputStream();

        byte[] b = new byte[1024];

        int len ;

        StringBuilder sb = new StringBuilder();

        while((len = is.read(b)) != -1){

            sb.append(new String(b,0,len));

        }

        System.out.println(sb.toString());

    }

   

<xml>

<ToUserName><![CDATA[gh_123cccc6635c]] > </ToUserName>开发者微信号

<FromUserName><![CDATA[oc_ZF52wmsg-N7Oyxj9-l3Z_abcd]]> </FromUserName>  发送方帐号

<CreateTime>1567154787</CreateTime>消息创建时间 (整型)

<MsgType><![CDATA[text]]></MsgType>消息类型,文本为text、还有其他,例如视频、音频、图片

<Content><![CDATA[闃挎柉椤縘]> </Content>文本消息内容

<MsgId>22436262916012345</MsgId>消息id,64位整型

</xml>

   

这样获取消息虽然可以打印看见,但是对于开发来说并不是这样的xml文件---

所以我们需要将它转化为Map,使之更方便获取相关参数:

1、导入dom4j.jar

//主要用于处理用户消息

        public void doPost(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

                //调用转换方法将xml转化为Map并返回

                Map<String,String> map = MyService.parseXML(request.getInputStream());

                System.out.println(map);

        }

   

    public static Map<String, String> parseXML(InputStream is) {

            Map<String,String> map = new HashMap<>();

            //定义一个xml解析器

            SAXReader reder = new SAXReader();

              

            try {

                //获取xml文件

                Document document = reder.read(is);

                //获取文件根节点

                Element root = document.getRootElement();

                //获取根节点下所有子元素

                List<Element> elements = root.elements();

                //遍历List,并将每一个元素装入Map

                for (Element e : elements) {

                    map.put(e.getName(), e.getStringValue());

                }

            } catch (DocumentException e1) {

                e1.printStackTrace();

            }

              

            return map;

        }

   

   

   

posted @ 2020-10-22 10:47  黑质白章  阅读(181)  评论(0编辑  收藏  举报