WebServiceConnector 组件能让您使用业界标准 SOAP(简单对象访问协议)协议访问服务器公开的远程方法。Web 服务可以接受参数并返回结果。使用 Flash MX Professional 2004 创作工具和 WebServiceConnector 组件,您可以对远程 Web 服务和 Flash 应用程序之间的数据进行内部检查、访问和绑定。WebServiceConnector 组件的单个实例可用于多次调用同一操作。尽管这样,但如果要调用多个操作,您仍然需要为每个操作使用不同的 WebServiceConnector 组件实例。
Web 服务的方法(有时称为操作)由 Web 服务说明语言 (WSDL) 文件定义。WSDL 文件指定 Web 服务所公开的操作、参数和结果(称为架构)的列表。
WSDL 文件可使用 URL 访问。在 Flash MX Professional 2004 中,您可以查看任意 Web 服务的架构,方法是使用“Web 服务”面板输入其 WSDL 文件的 URL。一旦标识了 WSDL 文件,Web 服务即可用于您创建的任何应用程序。
注意:请记住,访问 Web 服务(如同任何外部数据一样)受 Flash Player 安全性功能限制。请参阅关于数据连接和 Flash Player 中的安全性(仅限于 Flash Professional)。
有关 WebServiceConnector 组件(包括其属性、方法和事件)的详细信息,请参阅WebServiceConnector 组件 (仅限于 Flash Professional) (要看到此信息,可能需要更新您的帮助系统。)。
WebServiceConnector 组件具有以下参数:
operation 字符串,代表 Web 服务的方法的名称。在创作 UI 中,此参数以弹出菜单的形式出现,并将在您更改 WSDLURL 时随时更新。
multipleSimultaneousAllowed 布尔值,如果将此参数设置为 true
,它允许 trigger()
操作在另一个 trigger()
操作正在进行时启动。多个同时进行的 trigger()
操作可能不会按调用它们时的相同顺序完成。同时,Flash Player 可能会对同时进行的网络操作数目加以限制。此限制因版本和平台而异。如果将该参数设置为 false
,则 trigger()
操作不能在另一个操作正在进行时启动。
suppressInvalidCalls 布尔值,如果将此参数设置为 true
,它会在数据参数无效时中止 trigger()
操作。如果将其设置为 false
,trigger()
操作将在需要时执行和使用无效数据。
WSDLURL 字符串,代表 Web 服务 WSDL 文件的 URL。
WebServiceConnector 组件的典型工作流程如下所示。
注意:创作者每次更改 WSDLURL
或 operation
参数时,params
和 results
组件属性的架构会随之更新。这将覆盖您所编辑的任何设置。
Web 服务的架构是通过其 WSDL 文件定义的。Flash MX Professional 2004 本身支持对 WSDL 进行内部检查以及生成架构。
以下示例演示如何查看 Web 服务的架构。
注意:此示例需要有效的 Internet 连接,因为它使用公共 Web 服务。如果在应用程序中使用 Web 服务,该 Web 服务必须位于与应用程序的 SWF 文件相同的域中,以便应用程序能够在 Web 浏览器中工作。请参阅应用程序和 Web 服务。
http://www.xmethods.net/sd/2001/BabelFishService.wsdl
这是所调用服务的示意图。参数以及结果结构是在架构内定义的。这种架构表明 BabelFish 服务在被调用时期望两个字符串参数,并将返回一个字符串作为调用的结果。
架构内标识的项目现在可以绑定到各种 UI 控件,以便为参数提供值或显示 Web 服务的结果。
许多开发人员都乐意使用业界标准(如 SOAP)Web 服务作为客户机和服务器之间的数据交换机制。这种方法之所以受到青睐的原因之一在于:使用 SOAP 支持逻辑公开的常用服务器数量日益增加。
然而,在某些情况下,您可能希望客户机软件使用由第三方发布的 Web 服务或由处于 Flash Player“沙箱”外部的服务器托管的 Web 服务。有很多方法可以达到此目的,并可以同时保留 Flash Player“沙箱”提供的最终用户安全和隐私。这些方法涉及到创建一个驻留在服务器上的中间对象,以便充当客户机和要使用的公共服务之间的桥梁。这种方法具有多个优点:
您建立的许多基于 SOAP 的应用程序将使用服务器上托管的专用 Web 服务。一旦确定了实施和公开您自己的 Web 服务的最佳方法,就可以轻松地使公共 Web 服务可供客户机应用程序使用。如果您控制服务器,则可以提供完整的解决方案。服务器是放置业务逻辑的理想位置,它可以确定回应数据请求的最佳方式以及应向客户机返回的结果。这同时也是建立应用程序最安全的方式。服务器可以提供附加处理,以确保用户只能访问某些服务,并保护客户机不被返回有害数据的恶意服务调用。请参阅关于数据连接和 Flash Player 中的安全性(仅限于 Flash Professional)。
当 WebServiceConnector 组件收到来自 Web 服务的多条数据记录时,它会将这些记录转换为一个动作脚本数组,以便可以在应用程序中访问它们。将 XML/SOAP 中的多条数据记录转换为动作脚本本机数据的过程可能非常消耗时间(大数组可能会消耗数秒或数十秒)。WebServiceConnector 组件支持一种称为迟滞解码的功能,该功能可以延迟转换。因此,不会立即将数组形式的结果值从 XML 转换为动作脚本。作为替代,传递给用户的结果值是一个特殊的对象,该对象充当类似于数组的功能,并仅在实际请求时才转换 XML 数据。您通过使用 myArray[myIndex]
命令请求数据。此功能的实际效果在于:它通过将工作负载分布在更长的时间期内,从而使人感觉 Web 服务的效率有所提高。
注意:只能通过使用 myArray[myIndex]
语法访问结果值。不能使用 for..in 循环(如 for (var i in myArray)
)对其进行访问。