程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务?

开发过程中遇到如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务的解决方法建议,希望对你解决如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务有所启发或帮助;

问题可能出在 Flex 的 SOAP 编码器中。尝试在您的 Flex 应用程序中扩展 SOAP 编码器并调试程序以查看如何处理空值。

我的猜测是,它作为NaN(非数字)传递。这会在某个时候弄乱 SOAP 消息解组过程(最明显的是在JBoss 5 服务器中......)。我记得扩展了 SOAP 编码器并对 NaN 的处理方式进行了显式检查。

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

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

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

这与以下内容基本相同:

currentChild.appendChild("null");

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

原因

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

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 的 XML 强制转换为 null 类型,要么将 null 类型强制转换为包含字符串“null”的根 xml 元素,并且测试通过,而它可能会失败。一种解决方法可能是在检查 XML(或任何东西,真的)“空值”时始终使用严格的相等性测试。

解决方案

除了在每个该死的 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 服务作为对象时不会发生该错误。

大佬总结

以上是大佬教程为你收集整理的如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务全部内容,希望文章能够帮你解决如何在 ActionScript 3 中将“Null”(姓氏!)传递给 SOAP Web 服务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。