проблема вызова метода из веб-сервиса - PullRequest
0 голосов
/ 19 августа 2011

Я звоню в веб-службу, используя wsdl и soap. Я написал гибкий код, который возвращает [объект AsyncToken] в текстовой области в качестве вывода. Какую дозу это означает?Код:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

        <mx:WebService id="DirectoryService" useProxy="false" wsdl="http://cmuicds.rutgers.edu/uicds/core/ws/services/DirectoryService.wsdl">   
        <mx:operation name="GetIncidentList" makeObjectsBindable="true" 
            resultFormat="e4x" 
            result="onResult(event);" 
            fault="onFault(event);"/>    
        </mx:WebService>

        <mx:ApplicationControlBar dock="true">
        <mx:Button id="button"
            label="Get incidents from web service"
            click="button_click()"/>
        <mx:ComboBox id="cmb" dataProvider="{zipfls}" labelField="name" width="241" height="24"/>
        <mx:TextArea id="textArea" x="10" y="40" width="616" height="61"/>
        </mx:ApplicationControlBar>

    <mx:Script>
       <![CDATA[
            import mx.controls.Alert;
            import flash.utils.ByteArray;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            import mx.utils.ObjectUtil;
            import mx.collections.ArrayCollection;
            import mx.rpc.soap.mxml.WebService;

            [Bindable] private var zipfls:ArrayCollection;
            private var flag:Boolean;
            //private var byte:ByteArray;

             private function button_click():void 
             {
            DirectoryService.GetIncidentList();
            //DirectoryService.GetIncidentListRequest();
            flag = DirectoryService.canLoadWSDL();
            //flag = DirectoryService.hasOwnProperty();
            Alert.show("Testing....." + flag);
            //Alert.show("Description GetIncidentList " +DirectoryService.GetIncidentList);
            //Alert.show("Testing Arraaay....." + );
            var objt:Object = DirectoryService.GetIncidentList();
            textArea.text = objt.toString()
        } 

         private function onResult(evt:ResultEvent):void 
         {
            //Alert.show("Hi");
            zipfls = evt.result as ArrayCollection;
            //byte = new ByteArray();               
            //textArea.text = ObjectUtil.toString(evt.result);
           // byte = evt.result as ByteArray;
            Alert.show("Is data comming in? " + zipfls);
        }

         private function onFault(evt:FaultEvent):void 
         {
            Alert.show(evt.type);

         }

       ]]>
    </mx:Script>

 </mx:Application>

1 Ответ

0 голосов
/ 19 августа 2011

AsyncToken является ссылкой на сервисный вызов.Когда вызов возвращается, AsyncToken отправляет некоторые события и содержит результат вызова службы.Однако вам не нужно использовать AsyncToken, который обрабатывается за кулисами с помощью фреймворкового кода Flex.На что вы хотите обратить внимание, так это на функцию onResult, которая была установлена ​​как обработчик для операции GetIncidentList.

Попробуйте этот код:

import mx.controls.Alert;
import flash.utils.ByteArray;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;
import mx.rpc.soap.mxml.WebService;

[Bindable] private var zipfls:ArrayCollection;
private var flag:Boolean;

private function button_click():void 
{
    flag = DirectoryService.canLoadWSDL();
    DirectoryService.GetIncidentList();
    Alert.show("Testing....." + flag);
} 

private function onResult(evt:ResultEvent):void 
{
   Alert.show("Is data comming in? " + evt.result);
   textArea.text = ObjectUtil.toString(evt.result);
}

private function onFault(evt:FaultEvent):void 
{
    Alert.show(evt.type);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...