微信开发(二)

接收用户发送的消息

根据腾讯的开发者文档,一共有6种回复类型

腾讯微信公众号开发文档

1 回复文本消息
2 回复图片消息
3 回复语音消息
4 回复视频消息
5 回复音乐消息
6 回复图文消息	

后台需要根据回复类型来创建java对象(类)

用户传到后台的数据类型为xml数据包,如果要使用数据包,则需要安装Dom4j161.zip依赖包,来将xml数据包转换成java对象
/**
     * 解析XML数据包
     * @param is
     * @return
     */
    public static Map<String, String> parseRequest(InputStream is) {
        Map<String,String> map = new HashMap<>();
        SAXReader reader = new SAXReader();
        try {
            //读取输入流,获取文档对象
            Document document = reader.read(is);
            //根据文档对象获取节点
            Element root = document.getRootElement();
            //获取根节点的所有子节点
            List<Element> elements = root.elements();
            for (Element e:elements){
                map.put(e.getName(),e.getStringValue());
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }

        return map;
    }

后台回复用户消息

后台回复消息时,需要将java对象转换成xml数据包,可使用xstream依赖包进行数据转换。转换的数据有两个注意点:
1.根标签应该为<xml>(默认为项目全路径)
2.子标签首字母应该应该为大写(默认小写)
错误实例:
<cn.itcast.web.entity.TextMessage>
  <toUserName>to</toUserName>
  <fromUserName>from</fromUserName>
  <createTime>1615289327</createTime>
  <msgType>text</msgType>
  <context>aaa</context>
</cn.itcast.web.entity.TextMessage>
解决方法:
1.使用xstream的注解解决
2.定义变量时直接定义成大写
XStream xStream = new XStream();
//此处标记使用了注解的类
xStream.processAnnotations(TextMessage.class);
String xml = xStream.toXML(tm);

//此处注解用来表明根标签为<xml>
@XStreamAlias("xml")
public class TextMessage extends BaseMessage {
	//此处注解用来使子标签大写
	@XStreamAlias("Context")
    private String context;
}

成功实例:

<xml>
  <ToUserName>to</ToUserName>
  <FromUserName>from</FromUserName>
  <CreateTime>1615289647</CreateTime>
  <MsgType>text</MsgType>
  <Context>aaa</Context>
</xml>

完整的项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值