`
luhantu
  • 浏览: 204551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Blazeds RPC调用 之 HttpService

 
阅读更多

使用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>

 

 

  • 描述: 如图1
  • 大小: 10.1 KB
  • 描述: 如图2
  • 大小: 19.4 KB
0
0
分享到:
评论

相关推荐

    Flex之BlazeDS文档

    ### Flex之BlazeDS文档详解 #### 一、BlazeDS概述 ##### 1.1 引言 在Flex开发中,与服务器进行通信是非常重要的环节。传统的HTTPService、WebService、URLLoader及FileReference等组件虽然能够实现基本的通信功能...

    blazeds开发者指南中英文对照版

    RPC(远程过程调用)服务允许客户端应用像调用本地函数一样调用服务器上的方法。BlazeDS的RPC服务提供了高性能的数据交换能力,使得客户端可以轻松地访问服务器上的业务逻辑,无需了解底层网络细节。 ##### 3.2 ...

    blazeDS(讲得很详细)

    RPC服务是BlazeDS的重要组成部分,它支持HTTP GET/POST、SOAP Web服务和Java对象调用。RemoteObject服务使得客户端能以简单的方式访问企业级功能,如数据交换、身份验证、日志记录等,而无需复杂的SOAP配置。 消息...

    Spring MVC+BlazeDS+Flex框架实践

    BlazeDS支持WebSocket、HTTP和RTMP协议,使得Flex客户端可以轻松地与Java后端进行通信,实现远程方法调用(Remote Procedure Call, RPC)。 **Flex框架** Flex是一种基于MXML和ActionScript的开放源代码UI框架,...

    BlazeDS入门教程.

    - 在项目的主Flex文件中,可以通过`mx.rpc.http.HTTPService`或`mx.rpc.remoting.Remoting`对象来调用服务器端的方法。 3. **测试Flex应用**: - 运行项目,测试是否能成功调用服务器端的Java方法并显示结果。 ...

    BlazeDs开发应用.pdf

    客户端通常使用Flex或AIR开发,它们通过SDK中的RemoteObject、HTTPService、Producer和Consumer等控件与BlazeDS服务端进行通信。同时,BlazeDS也支持与HTML、JavaScript结合,使用Ajax客户端库实现通信。 在服务端...

    《BlazeDS开发指南》.doc

    1. **RPC Services**:RPC(Remote Procedure Call)服务采用调用-响应模式,适用于客户端异步请求远程服务并获取结果。HTTPService、WebService、RemoteObject等控件可用于实现RPC。RemoteObject控件提供了一种简单...

    BlazeDS 数据通信技术

    - **服务(Service)**:服务是在服务器端运行的应用逻辑,它们可以被客户端通过远程过程调用(RPC)的方式调用。 - **目的地(Destination)**:目的地是客户端与服务端之间通信的目标地址,它通常是服务器端的服务名称或...

    《BlazeDS开发指南》学习笔记

    客户端利用Flex SDK中的组件(如RemoteObject、HTTPService、Producer、Consumer)与服务端通信,同时,HTML、JavaScript和Ajax客户端库也可用于构建与BlazeDS通信的前端。 #### 二、服务端集成步骤 为了在J2EE ...

    彻底理解blazeds

    1. **RPCService** - 这是Blazeds的核心服务之一,用于实现客户端与服务器之间的远程过程调用(RPC)。通过该服务,Flex或Air应用程序可以直接调用服务器端的Java方法,如同调用本地方法一样。这一过程包括自动序列...

    BlazeDS官方簡介

    - **概念**:Flex 和 AIR 应用程序可以通过 mx:RemoteObject 标签发起远程过程调用 (RPC) 至服务器端。 - **自动转换**:能够自动将“值对象”转换为 ActionScript 对象,反之亦然。 - **调用方式**:应用程序调用的...

    blazeds开发文档

    客户端利用Flex框架与服务器端通信,而Flex SDK和rpc.swc组件库提供了包括RemoteObject、HTTPService、WebService、Producer、Consumer在内的各种组件以支持不同的通信方式和服务调用模式。RemoteObject、Producer和...

    Flex调用WebService进行数据查询和显示(调整)

    Flex通过使用HTTPService或WebServices类来调用基于SOAP或RESTful协议的WebService。这两种方法都能实现Flex客户端与服务器端的数据交换,但SOAP通常用于复杂的、结构化的数据交换,而RESTful则更适合简单的数据获取...

    Flex在线翻译和手机归属地查询(源码)

    `HttpService_Fanyi.mxml`文件很可能是项目的主界面或服务调用模块,其中包含了对远程服务的配置和调用。 1. BlazeDS或LiveCycle Data Services:Flex通常通过BlazeDS或LiveCycle Data Services与Java后端进行AMF...

    Java和Flex通过Blaze 通信

    通过使用BlazeDS,开发者可以在后台Java应用程序和前台Flex界面之间轻松地传递数据,实现远程服务调用(Remote Procedure Calls,RPC)和消息传递。 在Java端,BlazeDS利用了Spring框架来管理和配置服务。开发者...

    Flex4 与Java通信,自己也在学习中!

    Flex4中的主要通信技术有:AMF(Action Message Format)和HTTPService,它们都是通过 BlazeDS 或 LCDS (LiveCycle Data Services) 这样的中间件来实现的。 1. AMF通信:AMF是一种二进制协议,用于在Flex和服务器...

Global site tag (gtag.js) - Google Analytics