例如
PayResult result = new PayResult();
result.setPayUrl(“http:abced?amount=122&
payWay=weixin”);
问题描述
当使用Xstream.toXML(result)方法转换报文后,payUrl的值为:http:abced?amount=122&
payWay=weixin
&
被转译成了 &
后果
这样的链接打开后,请求的相关系统未做特殊处理的情况下会获取不到payWay的值
各场景处理方式
1.如果接收方也使用Xstream报文转对象不需要多余处理
Xstream会将 &
自动转换成 &
2.如果接收方也使用Xstream报文转对象,又要求报文中特殊字符不能转义
payurl = “http:abced?amount=122&
payWay=weixin”;
result.setPayUrl("<![CDATA[" +payurl + "]]>");
转报文后 再调用StringEscapeUtils.unescapeXml(xml)
方法处理,将被转义后的符号转变成转义钱的符号
<![CDATA[]]>
对象转报文时不能阻止 & 符号被转义。报文中有 & 符号没有被转义时,