`
raymond.chen
  • 浏览: 1419131 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Flex RPC服务组件的使用

阅读更多

       Flex RPC服务组件包括三种服务组件:WebService、HttpService、RemoteObject。RPC服务组件包含在Flex SDK和Flex Data Service(现改名为LiveCycle Data Services,简称LCDS)中。只有在Flex Data Service中才可以使用RemoteObject组件,在Flex SDK中不能使用该组件。

 

一、WebService组件的使用

<!-- 如果Flex应用在Flex SDK环境下使用RPC,则useProxy属性值必须为false -->
<mx:WebService id="web" wsdl="http://localhost:8090/dcms/ws/webservice.jws?wsdl" 
	useProxy="false" showBusyCursor="true"/>

<mx:Button id="start" x="10" y="277" label="WebService数据" click="loadWebServiceData()"/>

//通过WebService组件获取数据
private function loadWebServiceData():void{
	web.getNextSequenceId("SmSApplyForm");
	txt1.text = web.getNextSequenceId.lastResult.toString();
}

 

二、HttpService组件的使用

     1、组件配置

<mx:HTTPService id="http" url="../test.jsp" 
	result="resultHandler(event)"
	fault="faultHandler(event)"
	resultFormat="text"
	method="POST"
	useProxy="false" showBusyCursor="true">

       <!-- 需要传递到服务端的参数 -->
	<mx:request xmlns="">
		<username>uid</username>
		<password>pwd</password>
	</mx:request>

</mx:HTTPService>

 

         提交服务:http.send();

 

     2、返回数据处理

           1、当返回string格式的数据时,resultFormat属性值应设为“text”,获取返回值的方法为:

                event.result.toString()

 

           2、当返回xml格式的数据时,resultFormat属性值应设为“e4x”,数据处理以及异常处理的代码为:

//成功返回数据后触发该方法
private function resultHandler(event:ResultEvent):void{
	var xml:XML = XML(event.result);
	txt1.text = xml.username;
}

//获取数据失败时触发该方法
private function faultHandler(event:FaultEvent):void{
	var fault:Fault = event.fault;
	var s:String = (fault.faultDetail!=null) ? fault.faultDetail : fault.faultString;
	Alert.show(s);
}

 

               数据提供页面的源码:

<%@page language="java" contentType="text/html; charset=utf-8"%>
<%
	String username = request.getParameter("username");
	String password = request.getParameter("password");
%>
<?xml version="1.0" encoding="UTF-8"?>
<user>
	<username><%=username%></username>
	<password><%=password%></password>
</user>

 

           3、当返回json格式的数据时,resultFormat属性值应设为“text”,数据处理的代码为:

private function resultHandler(event:ResultEvent):void{
	var s:String = String(event.result);
	s = s.replace(/\s/g, ''); //去掉所有前后空白符
	var obj = JSON.decode(s);
	txt1.text = obj.username;
}

 

            数据提供页面的源码:

                   注意:key和value必须要用双引号(")括起来。

<%@page language="java" contentType="text/html; charset=utf-8"%>
<%
	String username = request.getParameter("username");
	String password = request.getParameter("password");
%>
{"username":"<%=username%>", "password":"<%=password%>"}

 

三、RemoteObject组件的使用

      1、组件在mxml文件中的配置

<mx:RemoteObject id="ro" destination="remoteObjectService" fault="faultEvent(event)">
	<mx:method name="sayHello" result="resultEvent(event)">
		<mx:arguments>
			<arg>{txt1.text}</arg>
		</mx:arguments>
	</mx:method>
</mx:RemoteObject>

          destination:RPC服务接收点的ID。

          fault:调用服务出现异常时触发指定的方法。

          result:调用RPC服务成功返回后触发指定的方法。

 

       2、ActionScript代码

<mx:Script>
	<![CDATA[	
		//方法调用	
		private function show():void{
			ro.sayHello();
		}
		
		//结果处理
		private function resultEvent(event:ResultEvent):void{
			var s:String = String(event.result);
			txt2.text = s;
		}
		
		//异常处理
		private function faultEvent(event:FaultEvent):void{
			var fault:Fault = event.fault;
			var s:String = (fault.faultDetail!=null) ? fault.faultDetail : fault.faultString;
			txt2.text = s;
		}
	]]>
</mx:Script>

 

    通过AS代码调用方法:

var oper:Operation = ro.getOperation("staticMethod") as Operation;
oper.addEventListener(ResultEvent.RESULT, resultEvent);
oper.send("ddddd");

 

        3、在remoting-config.xml文件中增加以下配置信息:

<!-- RPC服务接收点 -->
<destination id="remoteObjectService">
	<properties>
		<source>com.cjm.flex.RemoteObject</source>
	</properties>
</destination>

 

        4、Java源码

package com.cjm.flex;

public class RemoteObject {
	public String sayHello(String username)throws RuntimeException{
		return "Hello " + username;
	}
}

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics