SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

Flex + LL連携(Ruby、Python、PHP)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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...");
}

次のページ
PHPを使う

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

クラスメソッド株式会社 篠崎 大地(シノザキ ダイチ)

クラスメソッド株式会社(http://www.classmethod.jp/)所属テクニカルスペシャリスト。金融系システムのRIA化を得意とし、日々アーキテクチャー設計と実装に奮闘中。Adobe Certified Flex 2.0 Developer。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4541 2009/11/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング