Flex RPCサービスコンポーネントの使用
5533 ワード
Flex RPCサービスコンポーネントには、WebService、HttpService、RemoteObjectの3つのサービスコンポーネントがあります.RPCサービスコンポーネントは、Flex SDKとFlex Data Service(LiveCycle Data Services、略称LCDS)に含まれています.RemoteObjectコンポーネントはFlex Data Serviceでのみ使用でき、Flex SDKでは使用できません.
一、WebServiceコンポーネントの使用
二、HttpServiceコンポーネントの使用
1、構成部品
コミットサービス:http.send();
2、返却データ処理
1.string形式のデータを返す場合、resultFormat属性値は「text」に設定し、戻り値を取得する方法は以下の通りである.
event.result.toString()
2、xml形式のデータを返す場合、resultFormat属性値は「e 4 x」に設定し、データ処理及び異常処理のコードは以下の通りである.
データ提供ページのソース:
3、json形式のデータを返す場合、resultFormat属性値は「text」に設定し、データ処理のコードは以下の通りである.
データ提供ページのソース:
注意:keyとvalueは二重引用符(")で囲まなければなりません.
三、RemoteObjectコンポーネントの使用
1、mxmlファイルにおけるコンポーネントの構成
destination:RPCサービス受信ポイントのID.
fault:呼び出しサービスに異常が発生した場合に指定したメソッドをトリガーします.
result:RPCサービスが正常に返された後、指定されたメソッドがトリガーされます.
2、ActionScriptコード
ASコードによる呼び出し方法:
3、remoting-config.xmlファイルに次の構成情報を追加します.
4、Javaソース
一、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属性値は「e 4 x」に設定し、データ処理及び異常処理のコードは以下の通りである.
//
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;
}
}