Hi Kaleb,

 

I always expected the web service to be ready after the load event completed. Probably it’s a matter of milliseconds. I never encountered your problem before, since I don’t automatically call web services after loading. So far, my webservices are only invoked behind a button.

 

But sooner or later I probably will, since I will want to push master data from the server into the application (like a country table or something like that) directly after startup.

 

So, this does not sound good ...

 

I expect that your workaround is the only solution.

 

Cheers,

Franck

 

 

 


From: flexcoders@yahoogroups.com [mailto:flexcoders@yahoogroups.com] On Behalf Of kaleb_pederson
Sent: Tuesday, August 08, 2006 1:38 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] WSDLError:Element not resolvable => LoadEvent doesn't imply service ready

 

I have been struggling with the "Element not resolvable" error today
in some of my unit tests using FlexUnit. As far as I can tell, the
LoadEvent doesn't imply that the service is ready. If I put a timer
in and wait 1 second after the load event to make my service call,
everything works correctly. If I don't wait 1 second, however, then
I receive the "Element not resolvable" error. This appears to be a
bug in the WebService class.

Here's my sample code:

import mx.rpc.soap.WebService;
import flash.events.Event;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.LoadEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class SoapDemoTest {

public function testListVocabularies():void {
trace('testListVocabularies');
ws = new mx.rpc.soap.WebService();
ws.addEventListener(LoadEvent.LOAD, onLoadCompleted);
ws.loadWSDL("http://192.168.1.1:8080/myserv/myserv?wsdl");
}

private function onLoadCompleted(evt:LoadEvent):void {
trace('onLoadCompleted');

// if I just call ws.listVocabularies, I receive the
// Cannot Resolve Element error.
ws.addEventListener(ResultEvent.RESULT,onResultReceived);
ws.listVocabularies(5,true);

/*
// if I use this timer instead of the above, everything works
var timer:Timer = new Timer(1000, 1);
timer.addEventListener(
TimerEvent.TIMER_COMPLETE,
onTimerComplete
);
timer.start();
*/
}

private function onTimerComplete(evt:TimerEvent):void {
trace("onTimerComplete");
ws.addEventListener(ResultEvent.RESULT,onResultReceived);
ws.listVocabularies(5,true);
}

private function onResultReceived(evt:ResultEvent):void {
trace("onResultReceived");
trace("result: " + evt.result.toString());
}

}

To test, simply fire testListVocabularies() in a CreationComplete
event handler.

Can anyone else confirm this? By the messages, it sounds like the
exact same thing that a number of people are running into.

Thanks for the help.

--Kaleb

__._,_.___

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com





SPONSORED LINKS
Web site design development Computer software development Software design and development
Macromedia flex Software development best practice


YAHOO! GROUPS LINKS




__,_._,___

Reply via email to