首页 > 其他分享 >FLEX AIR实践—FLEX AIR XML Encode Bug

FLEX AIR实践—FLEX AIR XML Encode Bug

时间:2023-05-26 12:02:45浏览次数:46  
标签:XML FLEX xmlSpecialCharsFilter WebService function AIR amp 转义


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

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

 

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

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

/**
     * Custom function to be used to escape XML special characters before
     * encoding any simple content. Valid for all operations on the web
     * service unless specifically overwritten on the operation level.
     * If none is provided, the defaults to whatever is set by the particular
     * implementation of IXMLEncoder
     */
    public function get xmlSpecialCharsFilter():Function
    {
        return _xmlSpecialCharsFilter;
    }

    public function set xmlSpecialCharsFilter(func:Function):void
    {
        _xmlSpecialCharsFilter = func;
    }

 

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

官方资料:
http://bugs.adobe.com/jira/browse/SDK-18326
处理方案:
在执行WebService所调用的方法前添加以下内容:

new WebService() ws.xmlSpecialCharsFilter= function(value:Object):String { return value.toString(); }

 

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

标签:XML,FLEX,xmlSpecialCharsFilter,WebService,function,AIR,amp,转义
From: https://blog.51cto.com/u_16129500/6354876

相关文章

  • FLEX实践—XML HttpService加载错误
    主应用代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center" verticalAlign="middle" creationComplete="init......
  • FLEX SharedObject介绍及应用
    以下内容是对网上一些资料的总结FlexSharedObject介绍(Flash的本地共享对象是在用户机器上实现持久化存储的数据集合。Flash可以从程序中控制这些数据集合,向其中存入或者从中读取大量的信息数据。使用SharedObject对象对象说明:SharedObject(共享对象)可以看作是小型的数据库,我......
  • FLEX实践—自动发送邮件
    代码:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[importflash.net.navigateToUR......
  • FLEX实践—控件内容与String显示区别
     在解释这个区别之前先来看一段示例:<?xmlversion="1.0"encoding="utf-8"?><mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Script><!--[CDATA[i......
  • FLEX实践—计算指定日期是当年/当月第几周
    计算指定日期是当月第几周:privatefunctionweekOfMonth(yyyy:Number,mm:Number,dd:Number):Number { varmyDate=newDate(yyyy,mm-1,dd); vardiff=myDate.getDate()-1; myDate.setDate(1); vardateWeek=7-myDate.getDay(); if(diff>date......
  • FLEX实践—加载XML文件错误
        这两天在研究一个FLEX小相册,准备做一个超级简单的纯FLEX相册,没想到在读取XML文件的时候遇到了这样一个问题:    1)用FLEXBUILDER创建了一个FLEX工程    2)写了一个MXML文件,一个XML文件    3)在程序中用HTTPService和URLRequest两种方法分别读取XML文件内容 ......
  • FLEX实践—获取当前窗口大小
       在FLEX中获取当前窗口的长度与宽度使用下面的方法:   Application.application.width   Application.application.height    在设置弹出窗口的长与宽的时候可以根据比例来设置,而不用将其长与宽设置为固定值。这样做的好处是考虑到了IE窗口的大小,通过比例设置可......
  • RUBY-FLEX实践—利用swfobject在RUBY工程中加载SWF
    开发环境:Ruby:Ruby1.9.1Rails:Rails2.3.5IDE:RubyMine2.0.1FlexBuilder:FlexBuilder4 开发思路:1)在FlexBuilder中创建Flex工程2)在RubyMine中创建Rails工程3)将Flex工程bin-debug下编译的swfobject.js拷贝至Ruby工程指定位置4)引用Flex工程编译后的html中的内容实现在Rails页面中嵌......
  • FLEX4 序列号失效
    愚人节这天,FLASHBUILDER也和大家开了个玩笑,一大早起来,序列号被封了。上网搜了一下,果然天无绝人之路 但是我换了序列号仍然无法使用 再看以下这位高手的:方法1:暂时把系统时间改到2008,启动后再调回现在的时间。方法2:解压后存入Flex的安装文件夹plugins/com.adobe.flexide.amt_4.0.......
  • FLEX4实践—DropDownList与ComboBox
    FLEX4相对FLEX3的组件变化列表中列出以这么一项:mx.controls.ComboBox->spark.components.DropDownList 官方解释如下:   ComboBox控件是DropDownListBase控件的子类。与DropDownListBase控件类似,当用户从ComboBox控件的下拉列表中选择某项时,数据项将显示在......