使用HttpService 调用后台分为两种情况
1.直接访问http 服务而不用通过blazeds服务端的代理服务
2.通过blazeds服务端的代理服务
先说第一种,就比较简单。
var httpService1:HTTPService = new HTTPService(); httpService1.url = "http://www.baidu.com"; httpService1.resultFormat = HTTPService.RESULT_FORMAT_TEXT; httpService1.addEventListener(FaultEvent.FAULT,onFalut); httpService1.addEventListener(ResultEvent.RESULT,onResult); httpService1.send();
只要你赋上url属性并且设置下resultFormat的格式,就可以直接发送了。
第二种,稍微比较麻烦一些。
首先,现在proxy-config.xml 文件中设置: 如图1
<destination id="DefaultHTTP"> <properties> <!-- The endpoint available to the http proxy service --> <url>http://www.baidu.com</url> <!-- Wildcard endpoints available to the http proxy services --> <dynamic-url>http://*</dynamic-url> </properties> </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 httpService2:HTTPService = new HTTPService(); httpService2.destination = "DefaultHTTP"; httpService2.url = "http://www.baidu.com"; httpService2.resultFormat = HTTPService.RESULT_FORMAT_TEXT; httpService2.useProxy = true; httpService2.channelSet = channelSet; httpService2.addEventListener(FaultEvent.FAULT,onFalut); httpService2.addEventListener(ResultEvent.RESULT,onResult); httpService2.send();
你可以看到你要设置httpservice的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" xmlns:pivot="com.flexmonster.pivot.*"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; import mx.messaging.ChannelSet; import mx.messaging.channels.HTTPChannel; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; 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 httpService1:HTTPService = new HTTPService(); httpService1.url = "http://www.baidu.com"; httpService1.resultFormat = HTTPService.RESULT_FORMAT_TEXT; httpService1.addEventListener(FaultEvent.FAULT,onFalut); httpService1.addEventListener(ResultEvent.RESULT,onResult); httpService1.send(); } 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 httpService2:HTTPService = new HTTPService(); httpService2.destination = "DefaultHTTP"; httpService2.url = "http://localhost:8400/blazeds/Test.html"; httpService2.resultFormat = HTTPService.RESULT_FORMAT_TEXT; httpService2.useProxy = true; httpService2.channelSet = channelSet; httpService2.addEventListener(FaultEvent.FAULT,onFalut); httpService2.addEventListener(ResultEvent.RESULT,onResult); httpService2.send("aaa"); } ]]> </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>
相关推荐
### Flex之BlazeDS文档详解 #### 一、BlazeDS概述 ##### 1.1 引言 在Flex开发中,与服务器进行通信是非常重要的环节。传统的HTTPService、WebService、URLLoader及FileReference等组件虽然能够实现基本的通信功能...
RPC(远程过程调用)服务允许客户端应用像调用本地函数一样调用服务器上的方法。BlazeDS的RPC服务提供了高性能的数据交换能力,使得客户端可以轻松地访问服务器上的业务逻辑,无需了解底层网络细节。 ##### 3.2 ...
RPC服务是BlazeDS的重要组成部分,它支持HTTP GET/POST、SOAP Web服务和Java对象调用。RemoteObject服务使得客户端能以简单的方式访问企业级功能,如数据交换、身份验证、日志记录等,而无需复杂的SOAP配置。 消息...
BlazeDS支持WebSocket、HTTP和RTMP协议,使得Flex客户端可以轻松地与Java后端进行通信,实现远程方法调用(Remote Procedure Call, RPC)。 **Flex框架** Flex是一种基于MXML和ActionScript的开放源代码UI框架,...
- 在项目的主Flex文件中,可以通过`mx.rpc.http.HTTPService`或`mx.rpc.remoting.Remoting`对象来调用服务器端的方法。 3. **测试Flex应用**: - 运行项目,测试是否能成功调用服务器端的Java方法并显示结果。 ...
客户端通常使用Flex或AIR开发,它们通过SDK中的RemoteObject、HTTPService、Producer和Consumer等控件与BlazeDS服务端进行通信。同时,BlazeDS也支持与HTML、JavaScript结合,使用Ajax客户端库实现通信。 在服务端...
1. **RPC Services**:RPC(Remote Procedure Call)服务采用调用-响应模式,适用于客户端异步请求远程服务并获取结果。HTTPService、WebService、RemoteObject等控件可用于实现RPC。RemoteObject控件提供了一种简单...
BlazeDS 提供了 RemoteObject、HTTPService 和 WebService 控件来实现这一功能,便于集成企业级服务,如身份验证、日志记录等。 3. 消息服务:BlazeDS 支持发布/订阅模式的消息传递,通过 Producer 和 Consumer ...
- **服务(Service)**:服务是在服务器端运行的应用逻辑,它们可以被客户端通过远程过程调用(RPC)的方式调用。 - **目的地(Destination)**:目的地是客户端与服务端之间通信的目标地址,它通常是服务器端的服务名称或...
客户端利用Flex SDK中的组件(如RemoteObject、HTTPService、Producer、Consumer)与服务端通信,同时,HTML、JavaScript和Ajax客户端库也可用于构建与BlazeDS通信的前端。 #### 二、服务端集成步骤 为了在J2EE ...
1. **RPCService** - 这是Blazeds的核心服务之一,用于实现客户端与服务器之间的远程过程调用(RPC)。通过该服务,Flex或Air应用程序可以直接调用服务器端的Java方法,如同调用本地方法一样。这一过程包括自动序列...
- **概念**:Flex 和 AIR 应用程序可以通过 mx:RemoteObject 标签发起远程过程调用 (RPC) 至服务器端。 - **自动转换**:能够自动将“值对象”转换为 ActionScript 对象,反之亦然。 - **调用方式**:应用程序调用的...
客户端利用Flex框架与服务器端通信,而Flex SDK和rpc.swc组件库提供了包括RemoteObject、HTTPService、WebService、Producer、Consumer在内的各种组件以支持不同的通信方式和服务调用模式。RemoteObject、Producer和...
Flex通过使用HTTPService或WebServices类来调用基于SOAP或RESTful协议的WebService。这两种方法都能实现Flex客户端与服务器端的数据交换,但SOAP通常用于复杂的、结构化的数据交换,而RESTful则更适合简单的数据获取...
`HttpService_Fanyi.mxml`文件很可能是项目的主界面或服务调用模块,其中包含了对远程服务的配置和调用。 1. BlazeDS或LiveCycle Data Services:Flex通常通过BlazeDS或LiveCycle Data Services与Java后端进行AMF...
通过使用BlazeDS,开发者可以在后台Java应用程序和前台Flex界面之间轻松地传递数据,实现远程服务调用(Remote Procedure Calls,RPC)和消息传递。 在Java端,BlazeDS利用了Spring框架来管理和配置服务。开发者...
Flex4中的主要通信技术有:AMF(Action Message Format)和HTTPService,它们都是通过 BlazeDS 或 LCDS (LiveCycle Data Services) 这样的中间件来实现的。 1. AMF通信:AMF是一种二进制协议,用于在Flex和服务器...