FLEX AIR实践—FLEX AIR XML Encode Bug

来源:互联网 发布:企业邮箱域名格式 编辑:程序博客网 时间:2024/04/27 22:55

 这几天在用AIR程序通过WebService进行数据传输时发现了以下问题:

用WebService传输‘A&B’内容到目的地,再从目的地将数据通过WebService获取到本地,结果数据变成了'A&B';
于是开始进行以下测试:
将'A&B'替换成'A&B'——>获取结果为'A&B'
测试了其他转义字符也得到了同样的结果(&均被转化成了&)

 

而同样的测试在Flex Application(非AIR工程)中进行得到的结果就是'A&B'

查了好久,最后找到了AIR BUG:
在WebService.as中有以下代码:

 

原来AIR在WebService向外传输数据前就对传输内容中的特殊字符做了转义处理,将'&'转义成了'&'
于是在传输过程中HTTP协议又对其进行了转义处理'&'就变成了'&'

官方资料:
http://bugs.adobe.com/jira/browse/SDK-18326

处理方案:
在执行WebService所调用的方法前添加以下内容:
new WebService() ws.xmlSpecialCharsFilter= function(value:Object):String { return value.toString(); }

 

通过重写xmlSpecialCharsFilter 禁止对任何字符进行转义处理。