2011-08-18 12 views
0

wsdl 및 soap을 사용하여 웹 서비스를 호출하고 있습니다. 텍스트 영역에 [object AsyncToken]을 반환하는 flex 코드를 output.what라는 값으로 작성했습니다. 코드 :webservice에서 메서드를 호출 할 때 문제가 발생했습니다.

<?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> 

답변

0

AsyncToken는 서비스 호출에 대한 참조입니다. 호출이 반환되면 AsyncToken은 일부 이벤트를 전달하고 서비스 호출의 결과를 포함합니다. 그러나 Flex 프레임 워크 코드에 의해 뒤에서 처리되는 AsyncToken을 사용할 필요가 없습니다. 살펴보고 싶은 것은 GetIncidentList 조작을위한 핸들러로 설정된 onResult 함수입니다.

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); 

} 
+0

나는 그것이 onResult 함수로하지 않을 것처럼 위의 code..it 보이는 실행 시도 :

이 코드를 사용해보십시오. – kanak

+0

'onFault'에 도착 했습니까? –

+0

예 5-10 분 후 결함 결과를 제공합니다 – kanak

관련 문제