You need to rethink your approach a bit more. Making an asynchronous call inside a synchronous method will not produce the results you want.
You should make the asynch call, then do whatever you want to do with the XML result inside the callback. This means that the onResponseReceived needs to initiate the action that uses the returned xml. On Feb 6, 4:21 am, reinika <[email protected]> wrote: > like you already said, it is indeed a problem that the callback > request isn't finished in the time the value is returned. i'll figure > this out now. > > thanks for your patience! > > On Feb 5, 5:38 pm, "[email protected]" > > <[email protected]> wrote: > > I'll try, hoping to be helpful! A lot of code decision depends on > > exactly what you want to do with this code. I do some assumption now: > > 1- you need to load at some kind of startup your variable 'result ' > > 2- you need to read the content of the 'result' variable later in the code. > > > I would do something as follows for what concerns MediaStation class: > > > public class MediaStation{ > > private static String result = "nothing"; > > public static String getXMLContent(String path){ > > return MediaStation.result; > > } > > public static void loadResultVariable() { > > RequestBuilder requestBuilder = new > > RequestBuilder(RequestBuilder.GET, path); > > try { > > requestBuilder.sendRequest(null, new RequestCallback() { > > public void onError(Request request, Throwable > > exception) { > > MediaStation.requestFailed(exception); > > } > > public void onResponseReceived(Request request, > > Response response) { > > MediaStation.result = response.getText(); > > } > > }); > > } catch (RequestException ex) { > > MediaStation.requestFailed(ex); > > } > > }} > > > (I have not tried to compile this code, please consider there may be errors) > > > Then from outside this class I would call loadResultVariable() at the > > beginning, that is when your code is initializing. Then you can use > > easily getXMLContent, but after having ensured that the server request > > has already finished. > > Note that there are many other issues that can arise due to callbacks, > > issues that can be addressed in many ways, but I suppose you can get a > > lot of info about them. > > > BR, > > Federica > > > reinika ha scritto: > > > > yes, that might be an issue. > > > i know it goes back to the basics of programming, but maybe you can > > > give me an outline how i can achieve to call a method for reading a > > > xml file and returning its content (as you say you've never seen > > > something like that before). > > > > thanks! > > > > On Feb 5, 5:00 pm, "[email protected]" > > > <[email protected]> wrote: > > > >> I try to suggest you something, but I hope not to give a trivial > > >> suggestion to you... > > > >> Are you sure that you call MediaStation.getXMLContent() after the > > >> callback returns? For what I can read in your code, you send the > > >> callback in the try / catch block, then the next statement that is > > >> executed is "return MediaStation.result". So you may not have finished > > >> the callback execution at that point. Anyway this is a way of using a > > >> getter function in conjunction with a request that I have never seen > > >> before. > > > >> BR, > > >> Federica > > > >> reinika ha scritto: > > > >>> hi! > > > >>> maybe somebody could help me with this. i'm trying to set the > > >>> "MediaStation" static variable "result" in an inner class, > > >>> unfortunately the the method "getXMLContent(...)" still returns the > > >>> initially set string "nothing" when calling it with: > > >>> --- > > >>> Window.alert("Content: " + MediaStation.getXMLContent(XML_FILEPATH)); > > >>> --- > > >>> I also checked, that the inner method "onResponseReceived" is called > > >>> and "response.getText();" also returns a result (see the commended > > >>> alert window statement). > > > >>> source follows: > > >>> --- > > >>> ... > > > >>> public class MediaStation{ > > >>> private static String result = "0"; > > > >>> ... > > > >>> public static String getXMLContent(String path){ > > >>> RequestBuilder requestBuilder = new RequestBuilder > > >>> (RequestBuilder.GET, path); > > >>> MediaStation.result = "nothing"; > > > >>> try { > > > >>> requestBuilder.sendRequest(null, new > > >>> RequestCallback() { > > >>> public void onError(Request request, > > >>> Throwable exception) { > > >>> > > >>> MediaStation.requestFailed(exception); > > >>> } > > >>> public void onResponseReceived(Request > > >>> request, Response response) > > >>> { > > >>> MediaStation.result = > > >>> response.getText(); > > >>> //Window.alert("XML file > > >>> successfully read: " + > > >>> MediaStation.result); > > >>> } > > >>> }); > > >>> } catch (RequestException ex) { > > >>> MediaStation.requestFailed(ex); > > >>> } > > >>> return MediaStation.result; > > >>> } > > >>> ... > > >>> } > > >>> --- > > > >>> thanks for your help! bye! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
