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

Blazeds RPC调用 之 webService

阅读更多

和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

Xml代码 
  1. <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">  
  2.            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>  
  3.        </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>

 

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

相关推荐

    Flex调用Webservice及java程序

    2. **调用Webservice** - **通过SOAP**:在Flex中,我们可以使用`mx.rpc.soap.*`包中的类来创建SOAP客户端,如`WebService`类。首先,我们需要定义一个接口,该接口对应于Web服务的WSDL(Web服务描述语言)文档中的...

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

    在本文中,我们将深入探讨如何在Flex中调用WebService进行数据查询,并展示查询结果。这个主题对于创建交互性强、动态的Web应用程序至关重要。 首先,让我们了解Flex与WebService之间的通信方式。Flex通过使用...

    Flex之BlazeDS文档

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

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

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

    BlazeDS的ppt课件讲解

    BlazeDS的核心优势在于其能够简化远程服务调用,并通过消息服务实现实时双向数据流。 **特点:** - **远程访问服务**:允许客户端程序(如Flex或AIR)通过简单的API来调用服务器端的业务逻辑。 - **实时消息传递**...

    BlazeDs开发应用.pdf

    HTTPService、WebService和RemoteObject控件分别支持HTTP GET/POST、SOAP和Java对象的调用,同时RemoteObject控件能实现企业级功能,如跨域数据交换、认证、日志记录等,无需复杂的SOAP配置。 2. Messaging ...

    《BlazeDS开发指南》.doc

    HTTPService、WebService、RemoteObject等控件可用于实现RPC。RemoteObject控件提供了一种简单的方式来访问Java对象,而无需像SOAP服务那样进行复杂的配置。 2. **Messaging Services**:消息服务支持客户端与...

    BlazeDS 数据通信技术

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

    彻底理解blazeds

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

    BlazeDS官方簡介

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

    BlazeDS开发者指南

    - **WebService组件特定功能**:特别强调WebService组件的一些特殊功能。 - **异步调用处理**:介绍如何处理对服务的异步调用。 #### 八、Remoting服务 - **RemoteObject组件**:介绍RemoteObject组件及其用途。 -...

    blazeds开发文档

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

    flex请求webservice

    - 调用Web服务方法:在ActionScript代码中,可以通过实例化WebService组件并调用其方法来发起请求。例如,`webServiceInstance.myWebServiceMethod(params, resultHandler, faultHandler);` - 处理结果:定义...

    flex webservice

    5. **Web服务框架**:在Flex应用中,常用的服务框架有Adobe LiveCycle Data Services(LCDS)、BlazeDS等,它们提供了与Java后端服务集成的能力,包括Web服务、EJB、JMS等。 6. **XFire**:XFire是Java平台上一个...

    Java和Flex通过Blaze 通信

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

    Flex与处部的数据通信和图表

    Remoting是另一种远程调用方式,通常用于与服务器端的AMF(Action Message Format)服务通信,如Flash Remoting或BlazeDS。这种方式提供了更高效的数据传输,因为AMF是一种二进制协议。 **4.2 Flex图表** 图表是...

    Flex Service

    在Flex中,我们可以使用 mx.rpc.soap.* 命名空间中的类来调用SOAP服务。例如,使用WebService类,开发者可以定义服务端的WSDL(Web服务描述语言)URL,然后调用其方法获取数据。Flex自动处理XML到ActionScript对象的...

Global site tag (gtag.js) - Google Analytics