首页 > 其他分享 >如何在ActionScript 3中将"Null"(一个真实的姓氏!)传递给SOAP Web服务

如何在ActionScript 3中将"Null"(一个真实的姓氏!)传递给SOAP Web服务

时间:2023-10-13 19:44:46浏览次数:39  
标签:XML Web null 姓氏 ActionScript Null SOAP

内容来自 DOC[ https://q.houxu6.top/?s=如何在ActionScript 3中将"Null"(一个真实的姓氏!)传递给SOAP Web服务](https://q.houxu6.top/?s=如何在ActionScript 3中将"Null"(一个真实的姓氏!)传递给SOAP Web服务)

我们有一位员工的姓氏是“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

我正在使用:

  • WSDLSOAP)
  • Flex 3.5
  • ActionScript 3
  • ColdFusion 8

注意,错误不会在从ColdFusion页面调用webservice作为对象时发生。


追踪问题

一开始我以为这是一个强制转换错误,其中 null 被强制转换为 "null",并且 "null" == null 测试通过。但不是这样的。我非常接近了,但非常、非常错误。抱歉!

后来我在 wonderfl.net 上做了很多调试,并跟踪了 mx.rpc.xml.* 中的代码。在 XMLEncoder 的第1795行(在3.5源代码中),在 setValue 函数中,所有的 XMLEncoding 都归结为:

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

这本质上与:

currentChild.appendChild("null");

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

原因

根据评论者 Justin Mclean 在 bug 报告 FLEX-33664 中的指出,以下是问题所在(在我的 fiddle 中的最后两个测试验证了这一点):

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 传递字符串 "null" 时,它首先将其转换为带有文本 null 的根 XML 元素,然后对该元素进行空值测试。这是一个弱等式测试,因此要么包含 null 的 XML 被强制转换为 null 类型,要么 null 类型被强制转换为包含字符串 "null" 的根 xml 元素,测试通过了,尽管它可能应该失败。一个修复方案可能是在检查 XML(或任何内容)是否为“null”时始终使用严格的等式测试。

解决方案

除了修复此 ActionScript 版本中的每个 damn 版本的 bug 之外,我能想到的唯一合理的解决方法是测试字段是否为“null”,并将它们转义为 CDATA 值。CDATA 值是避免编码/解码问题的最合适的方式。 例如十六进制编码,它适用于单个字符。当您需要转义元素的整个文本时,CDATA 值是首选的。这样做的最大原因是它保持了可读性。

标签:XML,Web,null,姓氏,ActionScript,Null,SOAP
From: https://www.cnblogs.com/xiaomandujia/p/17762995.html

相关文章

  • JS加密/解密之webpack打包代码逆向
    Webpack是一个强大的打包工具,能够将多个文件打包成一个或多个最终的文件。然而,将已经经过打包的代码还原回原始源代码并不是一件直接的事情,因为webpack打包的过程通常会对代码进行压缩、混淆和优化,丢失了部分变量名和代码结构的信息。因此,完全还原打包前的源码可能并不现实。但......
  • Websocket vs SSE(Server-Sent Events)
    定义Websockets和SSE(服务器发送事件)都能够将数据推送到浏览器,但它们不是竞争技术。Websockets连接既可以向浏览器发送数据,也可以从浏览器接收数据。可以使用websockets的应用程序的一个很好的例子是聊天应用程序。SSE连接只能向浏览器推送数据。在线股票报价或Twitter......
  • AWS香港Web3方案日,顶象防御云安全实践案例受关注
    9月26日,AWS合作伙伴之Web3解决方案日在香港举办。来自人工智能、Web3等领域的创业公司、技术专家、风险投资商,就元宇宙时代未来发展进行了深入交流。现场展示了顶象防御云在金融与Web3领域的安全实践案例。  Web3为互联网体系架构的一个整体演进和升级,通过新的协议,让互联......
  • Dart web app
    安装dart#设置brew源exportPUB_HOSTED_URL=https://pub.flutter-io.cnexportFLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn#安装brewinstalldart-sdk#查看版本dart--version#查看安装目录arch-arm64brewinfodart-sdk安装安装we......
  • 工业4.0:数字孪生智慧工厂Web3D可视化系统方案
    智能工厂是一个网络物理系统,它使用先进技术来分析数据、推动自动化流程并随时学习。建设背景市场背景智慧工厂是实现企业转型升级的一条优化路径。智慧工厂产业链涉及范围广泛,包括传感器、控制系统、监控系统、计算机网络系统、工业软件、工业机器人等。中国智慧工厂市场规模85......
  • 配置Tomcat运行Java Web项目
    创建项目创建JavaWeb项目ctrl+shift+p打开搜索Maven原型,并选择从maven原型创建新项目或者按如下方式:选择从Maven原型创建Web项目从maven-archetype-webapp原型创建项目接着选择原型版本、输入包名、项目名、选择项目存放位置注意:到此需要按一下回车来继续输入Y或者回......
  • 解决SUM函数返回为NULL
    解决SUM函数返回为NULLSUM函数的作用:计算某一字段中所有行的数值和,使用SUM函数进行对符合条件的结果行数进行求和。问题产生:sum求和时会对null进行过滤,不计算,但如果没有返回结果,则sum函数的返回值为null,不是0:解决方式:1.IFNULL使用IFNULL函数进行查询,判断第一个......
  • 第八章、web前端架构师
    目录十六、编辑器服务端基础API开发1、技术方案设计和基本功能开发2、技术方案设计3、接口设计4、RestfulAPIvsGraphQL5、数据库设计6、server架构设计7、技术方案设计8、基本功能开发9、登录功能10、用户信息接口11、作品管理接口12、模板接口十七、编辑器服务端调用第三方服......
  • 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统
    序:这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人,基本都绕不开3D机房。包括前面也讲过这样的案例《使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)》 《 使用webgl(three.js)创建科技版3D机房,3D机房微模块详细介绍(升级版三)——......
  • 文件包含漏洞在phpinfo条件竞争下获取WebShell
    PHP文件包含漏洞(利用phpinfo与条件竞争)在PHP环境下,如果网站存在本地文件包含漏洞,但找不到可以包含的文件时,我们可以通过条件竞争来包含缓存文件的方法来获取webshell。又因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获取临时文件名,进而进行包含。前提......