NetConnectionを使う
サーバサイドのサービスを呼び出すにはNetConnectionクラスを使用します。まず、「gatewayアドレス」を第一引数に、connectメソッドを呼び出し、接続します。
connect(command:String, ... arguments):void
「gatewayアドレス」は、サーバサイドのAMF実装に依存する、固定のアドレスです。接続に成功したら、callメソッドを使って実際のサービスを呼び出します。
call(command:String, responder:Responder, ... arguments):void
第一引数には、サービス名を指定します。第二引数には、Responderインスタンスを指定します。Responderは、呼び出しが成功したときのハンドラと、呼び出しが失敗したときのハンドラを指定して生成します。第三引数以降には、引数を指定します。引数が必要ない場合には省略します。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%">
<mx:Script><![CDATA[
private static const PERL:String = "Perl";
private static const PHP:String = "PHP";
private static const PYTHON:String = "Python";
private static const NET:String = "NET";
private static const RUBY:String = "Ruby";
private function sayHello():void
{
var client:IServiceClient;
switch (lang.selectedValue)
{
case RUBY:
client = new RubyClient(this);
break;
case PHP:
client = new PHPClient(this);
break;
case PYTHON:
client = new PythonClient(this);
break;
case PERL:
client = new PerlClient(this);
break;
case NET:
client = new NETClient(this);
break;
default:
throw new Error("Invalid selection.");
}
if (client != null)
{
const useAMF0:Boolean = lang.selectedValue == PERL;
client.callRemote(useAMF0);
}
}
]]></mx:Script>
<mx:Form width="100%" height="100%">
<mx:FormItem label="Remote service type:">
<mx:HBox>
<mx:RadioButtonGroup id="lang"/>
<mx:RadioButton groupName="lang" label="{RUBY}" selected="true"/>
<mx:RadioButton groupName="lang" label="{PHP}"/>
<mx:RadioButton groupName="lang" label="{PYTHON}"/>
<mx:RadioButton groupName="lang" label="{PERL}"/>
</mx:HBox>
</mx:FormItem>
<mx:FormItem label="Send to server">
<mx:HBox horizontalAlign="left" width="100%">
<mx:TextInput id="tiMessage" text="Hello" />
<mx:Spacer width="100%" />
<mx:Button label="Send a request" click="sayHello()" />
</mx:HBox>
</mx:FormItem>
<mx:FormItem label="Result from server" width="100%" height="100%">
<mx:TextArea id="taResult" width="100%" height="100%"/>
</mx:FormItem>
<mx:FormItem label="Error from server" width="100%" height="100%">
<mx:TextArea id="taFault" width="100%" height="100%"/>
</mx:FormItem>
</mx:Form>
</mx:Application>
サーバサイドの処理結果が成功か失敗かに応じて、Responderの生成時に指定した対応するハンドラに渡されます。
実際のコード例は以下のようになります。
var responder:Responder = new Responder(onSuccess, onFault);
try{
gateway.connect(gatewayUrl);
}
catch(e:ArgumentError){
trace("invalid gateway address...");
}

