Webサービス/FlashでWebサービス のバックアップ(No.1) |
|
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);
こちらはマウスだけで設定できちゃうので、デザイナさん向けなのかな?