|
Last-modified: 2004-06-04 (金) 08:51:20 (7272d)
Flash MX Professional 2004を使えば、FlashコンテンツからSOAP Webサービスを直接利用することができます。 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で設定する方法こちらはマウスだけで設定できちゃうので、デザイナさん向けなのかな?
[番外] 他ドメインの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> |