Last-modified: 2004-06-04 (金) 08:51:20 (7259d)

 Flash MX Professional 2004を使えば、FlashコンテンツからSOAP Webサービスを直接利用することができます。
 スクリプトコードで実現する方法と、GUIで設定する方法がありますが、動作基盤は同じようです。

 

WebServiceクラスを使ってActionScriptだけで実現する方法

 こちらの方が、より細かい設定ができるようです。SOAPヘッダを追加したりもできそうです。プログラマには、こっちの方がわかりやすいかもしれませんね。

 サンプルコード(Buttonのclickイベントでの記述例)

on (click) {
  import mx.services.*;
  // WSDLを指定してWebServiceクラスをインスタンス化
  var service = new WebService("http://localhost:8080/fortune/services/Test?wsdl");
  // メソッドを呼び出す。戻り値はPendingCallクラスとなる。
  resultObj = service.getFortune(_parent.birth_ti.text);
  // onResultイベントハンドラに結果取得後の処理を記述する。
  resultObj.onResult = function(results) {
    _parent.group_label.text = results.rokkoGroup;
    _parent.content_txt.text = "";
    for (var i = 0; i < results.items.length; i++) {
      _parent.content_txt.text += "[[" + results.items[i].name + "]] "
                                + results.items[i].content + "\n\n";
    }
  }
  // onFaultイベントハンドラに結果取得失敗時の処理を記述する。
  resultObj.onFault = function(fault) {
    trace(fault.faultCode + "," + fault.faultstring);
  }  
}

 WebServiceクラスのコンストラクタの第2引数にLogクラスのインスタンスを指定すると、Webサービスの詳細なログが出力されるようになります。デバッグ用ですね。

serviceLog = new Log(Log.VERBOSE); 
serviceLog.onLog = function(txt) { 
  trace(txt); 
} 
var service = new WebService("http://jomora.bne.jp:8080/Quiz/QuizService.asmx?wsdl", serviceLog);

WebServiceComponentクラスを使ってGUIで設定する方法

 こちらはマウスだけで設定できちゃうので、デザイナさん向けなのかな?

  1. 「ウィンドウ」「開発パネル」「Webサービス」を選択して、Webサービスパネルを開きます。
    Webサービスパネル1.PNG
  2. 左の青いアイコンをクリックして、Webサービスの定義を開き、WebサービスのWSDLを返すURLを入力し、「OK」ボタンを押します。
    Webサービスの定義.PNG
  3. すると、Webサービスコンポーネントが登録されます。
    Webサービスパネル2.PNG
  4. 利用したいメソッドを選択し、右クリックして、「メソッド呼び出しの追加」を選択します。
    Webサービスパネル3.PNG
  5. すると、フォームにWebサービスコンポーネントのインスタンスが張り付きます。
    Webサービスコンポーネント.PNG
  6. プロパティパネルでインスタンス名を入力した後に、コンポーネントインスペクタパネルのバインディングタブでバインディングの追加を行います。これは要するに、Webサービスの引数や戻り値を、Flashフォーム上のオブジェクトと関連付ける作業です。
    コンポーネントインスペクタ1.PNG
  7. バインディング項目を追加したら、その項目毎に「bound to」プロパティを設定して、関連付けを行います。
    バインド.PNG
  8. この作業をWebサービスでやり取りするパラメータの数だけ繰り返します。
    コンポーネントインスペクタ2.PNG
  9. 最後に、Webサービスを呼び出したいActionScriptコードにカーソルを置いた後、ビヘイビアパネルのビヘイビアの追加ボタンから「Data」「Trigger Data Source」を選んで、
    ビヘイビア.PNG
  10. 呼び出したいWebサービスコンポーネントを選択すると、
    Trigger_Data_Source.PNG
  11. アクションパネルにWebサービスを呼び出すコードが出力されます。
    // Trigger Data Source Behavior
    // Macromedia 2003
    this._parent.test_wsc.trigger();

[番外] 他ドメインのFlashファイルからのアクセスを許可する。

 デフォルトでは、Flashコンポーネントが通信できるのは、そのSWFファイルの配布ホストだけに限定されます。他のホストのFlashからの通信を受信許可するには、Webサーバのコンテンツルートに crossdomain.xml を配置するらしい…

<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="jomora.bne.jp" secure="false" />
  <allow-access-from domain="*.bne.jp" secure="false" />
</cross-domain-policy>

添付ファイル: fileTrigger_Data_Source.PNG 5707件 [詳細] fileビヘイビア.PNG 5852件 [詳細] fileコンポーネントインスペクタ2.PNG 3118件 [詳細] fileバインド.PNG 5860件 [詳細] fileコンポーネントインスペクタ1.PNG 3158件 [詳細] fileWebサービスコンポーネント.PNG 3045件 [詳細] fileWebサービスの定義.PNG 5309件 [詳細] fileWebサービスパネル3.PNG 5465件 [詳細] fileWebサービスパネル2.PNG 5430件 [詳細] fileWebサービスパネル1.PNG 5451件 [詳細]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS