Webサービス/FlashでWebサービス のバックアップ(No.2) |
|
Flash MX Professional 2004を使えば、FlashコンテンツからSOAP Webサービスを直接利用することができます。
スクリプトコードで実現する方法と、GUIで設定する方法がありますが、動作基盤は同じようです。
こちらの方が、より細かい設定ができるようです。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);
こちらはマウスだけで設定できちゃうので、デザイナさん向けなのかな?
// Trigger Data Source Behavior // Macromedia 2003 this._parent.test_wsc.trigger();