一.请求方
<xml>
<toUserName><![CDATA[1]]></toUserName>
<fromUserName><![CDATA[2]]></fromUserName>
<createTime>3</createTime>
<msgType><![CDATA[4]]></msgType>
<event><![CDATA[5]]></event>
<deviceType><![CDATA[6]]></deviceType>
<deviceID><![CDATA[7]]></deviceID>
<content><![CDATA[8]]></content>
<sessionID>9</sessionID>
<openID><![CDATA[10]]></openID>
</xml>
2.服务器
1.封装bean类
@XmlRootElement(name="xml")
public class BundingBean { //
private String toUserName; // 是 接收方(公众号)的user name
private String fromUserName; // 是 发送方(微信用户)的user name
private String createTime; // 是 消息创建时间,消息后台生成
private String msgType; //是 消息类型:device_event
private String event; // 是 事件类型,取值为bind/unbind bind:绑定设备 unbind:解除绑定
private String deviceType; // 是 设备类型,目前为“公众账号原始ID”
private String eeviceID; // 是 设备ID,第三方提供
private String content; //是 当Event为bind时,Content字段存放二维码中
// 第三方追加的自定义的数据
// 详情见1.5章节 获取设备二维码
// 或 1.11.1章节 API:获取deviceid和二维码
private String sessionID; // 是 微信客户端生成的session id,用于request和response对应,
// 因此响应中该字段第三方需要原封不变的带回
private String openID; // 是 微信账号的OpenID
getter/setter/toString
}
2.controller层
@Controller
public class GongzhongController {
@RequestMapping(value="/xmlPrase", headers = {"content-type=application/xml"})
public void addUser(@RequestBody BundingBean xml) {
System.out.println(xml);
}
}
3.结果
System.out.println(xml);的结果是:
BundingBean [toUserName=1, fromUserName=2, createTime=3, msgType=4, event=5, deviceType=6, deviceID=7, content=8, sessionID=9, openID=10]
这就封装到对象里面了.
4.需要注意的地方:
1.本xml的根是<xml>,所以要在bean的上方加注解是name=xml@XmlRootElement(name="xml")
如果根是其他的,那么必须改成其他的
@XmlRootElement(name="xml")
2.controller的注解是
@RequestMapping(value="/xmlPrase", headers = {"content-type=application/xml"})
必须要注写是xml格式的数据,而且请求方也必须content-type=application/xml,那么才可以通过xmlPrase.action访问就可以封装到bean里了
3.json和这个类似,比葫芦画瓢即可,只是不需要bean类上加注解了