2012-03-28 5 views
0

フレックスからWebサービスを呼び出すときに問題があります。私は1つのメソッド文字列GetData(int i)でUserServiceという名前のサービスを持っています。このメソッドをflexから呼び出してデータを取得したいと思います。私のコードはここにある:フレックスからWebサービスを呼び出す方法

    protected function application1_creationCompleteHandler(event:FlexEvent):void 
     { 
      uService = new UserService(); 
      uService.addEventListener("hello", echoResultHandler); 
      uService.GetData(1);        
     } 

     public function echoResultHandler(event:ResultEvent):void { 
      var retStr:String = event.result as String;     
      var retInt:int = event.result.echoInt; 
      Alert.show('want to play', retStr); 
     } 

は私の質問は難しいことではありませんが、それは作品をdoes't、なぜ私が理解できない...誰が私を助けることができることかもしれませんか?

私がserveeへの参照を追加したときにflexによって生成されるサービスコード。クラス継承

internal class _Super_UserService extends com.adobe.fiber.services.wrapper.WebServiceWrapper 
{ 


    public function _Super_UserService() 
    { 

     _serviceControl = new mx.rpc.soap.mxml.WebService(); 
     var operations:Object = new Object(); 
     var operation:mx.rpc.soap.mxml.Operation; 

     operation = new mx.rpc.soap.mxml.Operation(null, "GetData"); 
     operation.resultType = String; 
     operations["GetData"] = operation; 

     _serviceControl.operations = operations; 
     try 
     { 
      _serviceControl.convertResultHandler = com.adobe.serializers.utility.TypeUtility.convertResultHandler; 
     } 
     catch (e: Error) 
     { } 


     preInitializeService(); 
     model_internal::initialize(); 
    } 

    protected function preInitializeService():void 
    { 


     _serviceControl.service = "UserService"; 
     _serviceControl.port = "BasicHttpBinding_IUserService"; 
     wsdl = "http://localhost:3905/UserService.svc?wsdl"; 
     model_internal::loadWSDLIfNecessary(); 
    } 

    public function GetData(value:int) : mx.rpc.AsyncToken 
    { 
     model_internal::loadWSDLIfNecessary(); 
     var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("GetData"); 
     var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(value) ; 
     return _internal_token; 
    } 

} 

public class UserService extends _Super_UserService 
{ 

    protected override function preInitializeService():void 
    { 
     super.preInitializeService(); 
     // Initialization customization goes here 
    } 

} 
+0

詳細は、何が起こっているのかを知るのは難しいです。 UserServiceのコードを表示してください! – JeffryHouser

+0

私は理解しているかどうかはわかりません。フレックスによって生成された.netコードまたはコード? – Radislav

+0

私は自分の質問を更新しました。 – Radislav

答えて

4

あなたUserServiceのクラスが "こんにちは" という名前のイベントが送出されません。結果ハンドラは決して解雇されません。 ASynctokenに結果ハンドラを追加する必要があると思います。

var call : Asynctoken = uService.GetData(1); 
call.addResponder(new AsyncResponder(echoResultHandler)); 

実際にサービスを呼び出すコードを見ずにAsyncResponderAsyncToken

+0

ありがとう、私は後でそれをチェックします。それが役に立てば幸い。 – Radislav

+0

私はあなたが言ったすべてのことをやったが、それは決してうまくいかない。 echoResultHandlerが呼び出されませんでした...なぜか分かりません:( – Radislav

+0

ありがとう、私の問題の原因はhttp://help.adobe.com/jp/FlashPlatform/reference/actionscript/3/mx/rpc/で見つかりましたAsyncResponder.html#AsyncResponder%28%29 – Radislav

関連する問題