如何在 ActionScript 3 中将“Null”a real surname!传递给 SOAP Web 服务

如何解决如何在 ActionScript 3 中将“Null”a real surname!传递给 SOAP Web 服务

起初我认为这是一个强制错误,null被强制执行"null"并且测试"null" == null通过了。它不是。

从那以后,我Wonderfl.net 上做了很多摆弄,并在mx.rpc.xml.*. 在XMLEncoder(在 3.5 源代码中)的第 1795 行setValue,所有 XMLEncoding 归结为

currentChild.appendChild(xmlSpecialCharsFilter(Object(value)));

这基本上与以下内容相同:

currentChild.appendChild("null");

根据我原来的小提琴,这段代码返回一个空的 XML 元素。但为什么?

原因

根据评论者 Justin Mclean 关于错误报告FLEX-33664 的说法,以下是罪魁祸首(请参阅我的小提琴中的最后两个测试来验证这一点):

var thisIsNotNull:XML = <root>null</root>;
if(thisIsNotNull == null){
    // always branches here, as (thisIsNotNull == null) strangely returns true
    // despite the fact that thisIsNotNull is a valid instance of type XML
}

currentChild.appendChild传递 string"null"时,它首先将其转换为带有 text 的根 XML 元素null,然后针对 null 文字测试该元素。这是一个弱相等性测试,所以要么包含 null 的 XML 被强制为 null 类型,要么 null 类型被强制为包含字符串“null”的根 xml 元素,并且测试通过了它可能失败的地方。一种解决方法可能是在检查 XML(或任何东西,真的)时总是使用严格的相等测试来确定“nullness”。

解决方案

我能想到的唯一合理的解决方法是,除了在每个该死的 ActionScript 版本中修复这个错误之外,测试字段是否为“null”并将

例如,十六进制编码用于单个字符。当您转义元素的整个文本时,首选 CDATA 值。最大的原因是它保持了人类的可读性。

解决方法

我们有一位姓 Null 的员工。当姓氏用作搜索词时,我们的员工查找应用程序将被终止(现在这种情况经常发生)。收到的错误(感谢 Fiddler!)是:

<soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The SEARCHSTRING parameter to the getFacultyNames function is required but was not passed in.]</faultstring>

可爱吧?

参数类型为string

我在用:

  • WSDL (SOAP)
  • Flex 3.5
  • ActionScript 3
  • ColdFusion 8

请注意,从 ColdFusion 页面将 Web 服务作为对象调用时不会发生错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?