18.9.与WebService通信

18.9.1. 问题
我的应用程序需要与服务端的web 服务进行通信,Web 服务提供WSDL 信息表述可使用的方法和调用这些方法的具体信息。
18.9.2. 解决办法
创建mx.rpc.WebService 对象,设置wsdl 属性为WebService 的WSDL 地址。
18.9.3. 讨论
WebService 组件使用WSDL 文件与web 服务建立通信。Flash Player 能识别下列WSDL 文件的属性:
<binding>
指定客户端协议,例如这里的Flex 应用程序使用web 服务进行通信,绑定的协议有SOAP,HTTP GET, HTTP POST,和多功能因特网邮件扩展(MIME)。Flex 只支持SOAP 绑定。

<fault>
指定错误显示信息

<input>
指定客户端发送给web 服务的信息。

<message>
定义web 服务操作传输的数据

<operation>
定义<input>, <output>, 和<fault> 的标签集合

<output>
指定web 服务发送给客户端的信息

<port>
S 指定web 服务的终端,它关联绑定和网络地址。

<portType>
定义web 服务提供的操作

<service>
定义一组<port>标签集合,每个服务映射到一个<portType>标签,以指定不同的访问方式。

<types>
定义web 服务信息使用的数据类型

Flex 应用程序检查WSDL 文件以确定所有服务所提供的方法和每个服务返回的数据类型。

一个典型的WSDL 文件定义服务的名称,使用的类型和返回的数据类型。

创建WebService 对象,设置id 和WSDL 文件的位置:
+展开
-XML
<mx:WebService id="userRequestwsdl="http://localhost:8400/service/service?wsdl">
<mx:operation name="getRecipesresult="getRecipeHandler()fault="mx.controls.Alert.show(event.fault.faultString)"/>
</mx:WebService>

WebService 发出LoadEvent 类型事件或LoadEvent.LOAD,它指示WebService 已载入和解析wsdl 属性所指定的WSDL 文件,并准备好所有方法已可调用。在这之前WebService 对象是不能被调用,所以强烈建议使用这事件指示服务已可调用。WebService 组件也定义了一个ready 布尔属性可检测WSDL 文件已被载入,WebService 已准备好。下面的例子,定义了一个方法和事件处理函数处理服务的result 和fault 事件:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:WebService id="userRequestwsdl="http://localhost:8500/service/service?wsdlload="callService()">
<mx:operation name="getRecipesresultFormat="objectfault="createRecipeFault(event)"
result="createRecipeHandler(event)"/>

</mx:WebService>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
private function callService():void {
userRequest.getRecipes();
}
private function
createRecipeHandler(event:ResultEvent):void {
var arrayCol:ArrayCollection = event.result
as ArrayCollection;
}
private function
createRecipeFault(event:FaultEvent):void {
Alert.show(" error :: "+event.message);
}

]]>
</mx:Script>
</mx:Application>

加支付宝好友偷能量挖...


评论(0)网络
阅读(82)喜欢(0)flash/flex/fcs/AIR