前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java微信公众号开发入门(3)--简单消息回复

java微信公众号开发入门(3)--简单消息回复

作者头像
DencyCheng
发布2018-11-05 15:58:21
8440
发布2018-11-05 15:58:21
举报
文章被收录于专栏:SpringBootSpringBoot

版权声明:本文为博主原创文章,未经博主允许不得转载。

为什么需要这俩工具类 因为传输方式为XMl

第一步,解析xml文件工具代码

/**
	 * XML转map集合
	 * @param request
	 * @return
	 * @throws IOException
	 * @throws DocumentException
	 */
	public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException{
		Map<String, String> map = new HashMap<String, String>();
		SAXReader reader = new SAXReader();
		
		InputStream ins = request.getInputStream();
		Document doc = reader.read(ins);
		
		Element root = doc.getRootElement();
		List<Element> list = root.elements();
		
		for (Element e : list) {
			map.put(e.getName(), e.getText());			
		}
		
		ins.close();
		return map;
	}

第二步,map转XMl

	public static String textMessageToXml(TextMessage textMessage){
		XStream xstream = new XStream();
		xstream.alias("xml", textMessage.getClass());
		return xstream.toXML(textMessage);
	}

第三步,配置消息恢复servlet(跟校验在一起只不过是post方式)

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/xml;charset=utf-8");
        PrintWriter out = response.getWriter();
        try {
            Map<String, String> map = MessageUtil.xmlToMap(request);
            String toUserName = map.get("ToUserName");
            String fromUserName = map.get("FromUserName");
            String msgType = map.get("MsgType");
            String content = map.get("Content");
             
            String message = null;
            if ("text".equals(msgType)) {                // 对文本消息进行处理
                TextMeaasge text = new TextMeaasge();
                text.setFromUserName(toUserName);         // 发送和回复是反向的
                text.setToUserName(fromUserName);
                text.setMsgType("text");
                text.setCreateTime(new Date().getTime());
                text.setContent("你发送的消息是:" + content);
                message = MessageUtil.textMessageToXML(text);
                System.out.println(message);            
            }
            out.print(message);                            // 将回应发送给微信服务器
        } catch (DocumentException e) {
            e.printStackTrace();
        }finally{
            out.close();
        }
    }

第四步,微信扫码关键测试号 然后输入任意一段话

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步,解析xml文件工具代码
  • 第二步,map转XMl
  • 第三步,配置消息恢复servlet(跟校验在一起只不过是post方式)
  • 第四步,微信扫码关键测试号 然后输入任意一段话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档