和HttpService类似,调用后台有两种方式,
1.直接访问wsdl服务而不用通过blazeds服务端的代理服务
2.通过blazeds服务端的代理服务
先说第一种,就比较简单。
var webService:WebService = new WebService(); webService.wsdl = "http://feeds.adobe.com/webservices/mxna2.cfc?wsdl"; webService.addEventListener(FaultEvent.FAULT,onFalut); webService.addEventListener(ResultEvent.RESULT,onResult); webService.loadWSDL(); webService.getCategories();
只要你赋上wsdl属性,并且调用loadWSDL() (此方法在mxml标签中会自动调用) ,然后调用你要访问的operation的名字即可。
第二种,稍微麻烦一些
首先,现在proxy-config.xml 文件中设置: 如图1
<destination id="ws-catalog"> <properties> <wsdl>http://feeds.adobe.com/webservices/mxna2.cfc?wsdl</wsdl> <soap>*</soap> </properties> <adapter ref="soap-proxy"/> </destination>
然后,确保services-config.xml中有http的channel定义。如图2
- <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
- <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
- </channel-definition>
最后编写flex代码
var channelSet:ChannelSet = new ChannelSet(); var httpChannel:HTTPChannel = new HTTPChannel("my-polling-amf", "http://localhost:8400/blazeds/messagebroker/http"); channelSet.addChannel(httpChannel); var webService:WebService = new WebService(); webService.destination = "ws-catalog"; webService.useProxy = true; webService.channelSet = channelSet; webService.addEventListener(FaultEvent.FAULT,onFalut); webService.addEventListener(ResultEvent.RESULT,onResult); webService.loadWSDL(); webService.getCategories();
你可以看到你要设置webService的destination,channelSet并设置useProxy为true.
最终的app 文件为:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.messaging.channels.HTTPChannel; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; import mx.rpc.soap.WebService; private function onFalut(event:FaultEvent):void { trace("onFalut"); Alert.show("onFalut"); } private function onResult(event:ResultEvent):void { trace("onResult"); Alert.show("onResult"); } protected function button1_clickHandler(event:MouseEvent):void { var webService:WebService = new WebService(); webService.wsdl = "http://feeds.adobe.com/webservices/mxna2.cfc?wsdl"; webService.addEventListener(FaultEvent.FAULT,onFalut); webService.addEventListener(ResultEvent.RESULT,onResult); webService.loadWSDL(); webService.getCategories(); } protected function button2_clickHandler(event:MouseEvent):void { var channelSet:ChannelSet = new ChannelSet(); var httpChannel:HTTPChannel = new HTTPChannel("my-polling-amf", "http://localhost:8400/blazeds/messagebroker/http"); channelSet.addChannel(httpChannel); var webService:WebService = new WebService(); webService.destination = "ws-catalog"; webService.useProxy = true; webService.channelSet = channelSet; webService.addEventListener(FaultEvent.FAULT,onFalut); webService.addEventListener(ResultEvent.RESULT,onResult); webService.loadWSDL(); webService.getCategories(); } ]]> </fx:Script> <s:VGroup> <s:Button label="Directly access" click="button1_clickHandler(event)"/> <s:Button label="Pass by proxy" click="button2_clickHandler(event)"/> </s:VGroup> </s:Application>
相关推荐
2. **调用Webservice** - **通过SOAP**:在Flex中,我们可以使用`mx.rpc.soap.*`包中的类来创建SOAP客户端,如`WebService`类。首先,我们需要定义一个接口,该接口对应于Web服务的WSDL(Web服务描述语言)文档中的...
在本文中,我们将深入探讨如何在Flex中调用WebService进行数据查询,并展示查询结果。这个主题对于创建交互性强、动态的Web应用程序至关重要。 首先,让我们了解Flex与WebService之间的通信方式。Flex通过使用...
### Flex之BlazeDS文档详解 #### 一、BlazeDS概述 ##### 1.1 引言 在Flex开发中,与服务器进行通信是非常重要的环节。传统的HTTPService、WebService、URLLoader及FileReference等组件虽然能够实现基本的通信功能...
RPC(远程过程调用)服务允许客户端应用像调用本地函数一样调用服务器上的方法。BlazeDS的RPC服务提供了高性能的数据交换能力,使得客户端可以轻松地访问服务器上的业务逻辑,无需了解底层网络细节。 ##### 3.2 ...
HTTPService、WebService和RemoteObject控件分别支持HTTP GET/POST、SOAP和Java对象的调用,同时RemoteObject控件能实现企业级功能,如跨域数据交换、认证、日志记录等,无需复杂的SOAP配置。 2. Messaging ...
HTTPService、WebService、RemoteObject等控件可用于实现RPC。RemoteObject控件提供了一种简单的方式来访问Java对象,而无需像SOAP服务那样进行复杂的配置。 2. **Messaging Services**:消息服务支持客户端与...
- **服务(Service)**:服务是在服务器端运行的应用逻辑,它们可以被客户端通过远程过程调用(RPC)的方式调用。 - **目的地(Destination)**:目的地是客户端与服务端之间通信的目标地址,它通常是服务器端的服务名称或...
1. **RPCService** - 这是Blazeds的核心服务之一,用于实现客户端与服务器之间的远程过程调用(RPC)。通过该服务,Flex或Air应用程序可以直接调用服务器端的Java方法,如同调用本地方法一样。这一过程包括自动序列...
BlazeDS 提供了 RemoteObject、HTTPService 和 WebService 控件来实现这一功能,便于集成企业级服务,如身份验证、日志记录等。 3. 消息服务:BlazeDS 支持发布/订阅模式的消息传递,通过 Producer 和 Consumer ...
- **概念**:Flex 和 AIR 应用程序可以通过 mx:RemoteObject 标签发起远程过程调用 (RPC) 至服务器端。 - **自动转换**:能够自动将“值对象”转换为 ActionScript 对象,反之亦然。 - **调用方式**:应用程序调用的...
- **WebService组件特定功能**:特别强调WebService组件的一些特殊功能。 - **异步调用处理**:介绍如何处理对服务的异步调用。 #### 八、Remoting服务 - **RemoteObject组件**:介绍RemoteObject组件及其用途。 -...
客户端利用Flex框架与服务器端通信,而Flex SDK和rpc.swc组件库提供了包括RemoteObject、HTTPService、WebService、Producer、Consumer在内的各种组件以支持不同的通信方式和服务调用模式。RemoteObject、Producer和...
- 调用Web服务方法:在ActionScript代码中,可以通过实例化WebService组件并调用其方法来发起请求。例如,`webServiceInstance.myWebServiceMethod(params, resultHandler, faultHandler);` - 处理结果:定义...
5. **Web服务框架**:在Flex应用中,常用的服务框架有Adobe LiveCycle Data Services(LCDS)、BlazeDS等,它们提供了与Java后端服务集成的能力,包括Web服务、EJB、JMS等。 6. **XFire**:XFire是Java平台上一个...
通过使用BlazeDS,开发者可以在后台Java应用程序和前台Flex界面之间轻松地传递数据,实现远程服务调用(Remote Procedure Calls,RPC)和消息传递。 在Java端,BlazeDS利用了Spring框架来管理和配置服务。开发者...
Remoting是另一种远程调用方式,通常用于与服务器端的AMF(Action Message Format)服务通信,如Flash Remoting或BlazeDS。这种方式提供了更高效的数据传输,因为AMF是一种二进制协议。 **4.2 Flex图表** 图表是...
在Flex中,我们可以使用 mx.rpc.soap.* 命名空间中的类来调用SOAP服务。例如,使用WebService类,开发者可以定义服务端的WSDL(Web服务描述语言)URL,然后调用其方法获取数据。Flex自动处理XML到ActionScript对象的...