How to access Web Services with GWT

February 6th, 2008 - Written by Chris Fong in Using GWT

There are a lot of new and interesting web services popping up on the web these days, and you may want to make use them in your GWT applications. In this short guide, I will show you how to call these public apis from within your GWT app.

The main difficulty when trying to talk to some web service on another server is getting past your web browser’s Same-Origin Policy. This basically says that you may only make calls to the same domain as the page you are on. This is good for security reasons, but inconvenient for you as a developer as it eliminates the use of GWT’s HTTP library functions to achieve what we want to do. One way to get around this is to call a web service through a javascript tag which bypasses this problem. In his book, Google Web Toolkit Applications, Ryan Dewsbury actually explains this technique in more detail and provides a class called JSONRequest which handles all the hard work for us. JSON is one of the more popular data formats, so most web services support it. Lets leverage Ryan’s code and take a quick look at how it works.

public class JSONRequest {
  public static void get(String url, JSONRequestHandler handler) {
    String callbackName = "JSONCallback"+handler.hashCode();
    get( url+callbackName, callbackName, handler );
  }	
  public static void get(String url, String callbackName, JSONRequestHandler handler ) {
    createCallbackFunction( handler, callbackName );
    addScript(url);
  }
  public static native void addScript(String url) /*-{
    var scr = document.createElement("script");
    scr.setAttribute("language", "JavaScript");
    scr.setAttribute("src", url);
    document.getElementsByTagName("body")[0].appendChild(scr);
  }-*/;
  private native static void createCallbackFunction( JSONRequestHandler obj, String callbackName)/*-{
    tmpcallback = function(j) {
      obj.@com.gwtsite.client.util.JSONRequestHandler::onRequestComplete(Lcom/google/gwt/core/client/JavaScriptObject;)(j);
    };
    eval( "window." + callbackName + "=tmpcallback" );
  }-*/;
}

To make our request we call the get method with the web service url, and an implementation of the JSONRequestHandler interface. This interface has one method called onRequestComplete(String json). This is where you’ll handle the JSON formatted data once it comes back from the server. When calling a service from within a script tag, we need to specify the name of a callback function in the request. Most services let you specify the name yourself, so the first get method generates a callback name for you. The createCallback method is a JSNI method that simply calls your JSONRequestHandler implementation when the call returns via the callback name. Note, if you use this class, to make sure and change the package name for the JSONRequestHandler call to the correct location. Finally, the get method will call the addScript function which is responsible for embedding the <script> tag on your page and setting its src attribute to the web service url.

Now that I’ve described the technique to make the calls, you’ll need to find some APIs to use it with. When looking at an API specification, make sure it has a parameter to return results in JSON format, and that it supports a callback parameter. Here are some example web service APIs to start with.

Youtube GData API – Get a list of my uploaded videos.

JSONRequest.get(
  "http://gdata.youtube.com/feeds/api/users/bogleg/uploads?alt=json-in-script&callback=", 
  new JSONRequestHandler() { ... });

Google Social Graph API – Get the social graph of bradfitz.com.

JSONRequest.get(
  "http://socialgraph.apis.google.com/lookup?&q=bradfitz.com&pretty=1&fme=true&callback=", 
  new JSONRequestHandler() { ... });

Digg API – Get the top stories from Digg.

JSONRequest.get(
  "http://services.digg.com/stories/top?appkey=http%3A%2F%2Fgwtsite.com&type=javascript&callback=", 
    new JSONRequestHandler() { ... });

GeoNames webservice – Get a zip-code location.

JSONRequest.get(
  "http://www.geonames.org/postalCodeLookupJSON?postalcode=94566&country=US&callback=", 
  new JSONRequestHandler() { ... });

I hope you found this short tutorial useful. If you want to learn more about GWT, make sure to subscribe to my rss feed.


97 Comments Subscribe to this feed Stumble it!

97 Comments »

2008-02-06 09:21:30

[...] Fong from GWT Site has posted a tutorial on how to read data from a 3rd party server using JSONP. The tutorial is derived from the [...]

 
Comment by Ray Cromwell Subscribed to comments via email
2008-02-07 00:13:31

Couple of suggestions.

In your createCallback function, it is better to write

$wnd[callbackName]=tmpcallback

(or window[callbackName])

because GWT can obfuscate the paramater ‘callbackName’. In general, don’t use eval() inside JSNI functions.

It’s probably better practice to inject stuff into $wnd/$doc than the IFRAME.

Also, you probably want to delete $wnd[callbackName] in the closure, so that you don’t leak.

Cheers,
-Ray

Comment by Chris Fong
2008-02-07 00:18:51

Thanks for the tips Ray. I’ll try them out.

 
Comment by Chris Fong
2008-02-07 08:24:27

The article by Google’s Dan Morrill, titled Using GWT for JSON Mashups actually uses the techniques Ray describes. It’s quite good and goes into more detail then I do.

 
Comment by Ryan Subscribed to comments via email
2008-02-12 07:04:32

Actually you DO want to use the IFRAME in this case. Using $wnd /$doc does not work for this type of JSON (the JSON must be loaded in the same frame its processed in). Dan’s article covers this as well.

 
Comment by Ryan Subscribed to comments via email
2008-02-12 07:09:43

Another note. GWT is not going to obfuscate a string you pass into JSNI – it will obfuscate the variable NAME, but definitely not the value.

Comment by Ray Cromwell Subscribed to comments via email
2008-02-12 07:51:23

Yes, it will obfuscate the name which is what I meant (if it obfuscated values, no application would work) The eval() still can fail, but for a different reason, I didn’t notice the callback name was being used by value the first time. But tmpcallback is being used by name, so “=tmpcallback” can fail. This construct is unsafe.

Dan’s point about same-iframe applies if you’re using GWT’s JSON library, which the above code is not. I tend to write custom JSNI JSON code because I find the JSON library overly cumbersome and heavyweight. Yes, if you want to use instanceof in JSNI code, you need to load in the same IFRAME, or you can stringify the JSON and reparse it, which is another workaround I’ve seen people use.

In any case, the gotchas involved cry out for a standard GWT solution that doesn’t require people to roll their own. :)

Comment by Ryan Subscribed to comments via email
2008-02-12 12:24:58

Ray, you do have some good points but the above code WAS meant to be used with GWT’s JSON library. The JavaScriptObject passed back in the callback is used in the constructor of a JSONObject. It’s not in the class implementation but it is the best way to access the feed data in application code.

GWT’s JSON object model is very appropriate for this task. Creating separate JSNI methods for each value and object that can be returned in a feed is much more cumbersome than navigating the JSON library.

I would also not recommend turning the returned JavaScript object into a string since there is no standard way to do this. Note that these JSONP API’s don’t actually pass a string but call a function with a JavaScript object as a parameter. So you would need to convert this object to a JSON string somehow. Then you would need to parse it again. It’s quite an expensive task given the faster and simple alternative is using a class like the one above.

Another note is that some JSONP API’s don’t let you specify the callback method name and will just call a top level function named “callback” – this is why an array wasn’t used in the class the above code was derived from.

If you’d like to discuss further, I’d be happy to chat through email.

Comment by Ray Cromwell Subscribed to comments via email
2008-02-12 13:25:09

Ryan,
Whether the JSON library is more cumbersome or not depends on the complexity of the parsing. It’s far more verbose than the Javascript equivalent, so if you have a very complex JSON result, and you need to extract portions of it, writing a method a JSNI method that does ‘jsonobj.foo.bar[3].baz’ is more compact than the GWT JSON equivalent. I’ve written fairly complex JSON parsers using the GWT JSON module and they were more cumbersome and slower than a custom JSNI approach. (e.g. I parse 20,000 element multiresolution datastructures) I personally find the JSON module has more utility for generating JSON than parsing it. It’s like DOM vs XPath, I’d much rather use a DSL to navigate these objects. It doesn’t buy much type-safety either, unlike the GWT 1.5 ‘zero-overhead’ JSO approach. For 1.5, I’d like to see two approaches. One, using JSO subclasses to map JSON objects, and two, a more dynamic DSL driven approach, so that one may say JSONObject.get(“foo.bar.baz”)

I’m not sure I understand how the inability to override the callback name means you have to use eval() instead of array notation. For example, if callback is fixed as ‘callback’, you can write either window.callback = yourfunction or window['callback'] = closure. The issue is, as you know, that you can’t write eval(‘window.whatever=tmpcallback’) and define tmpcallback a local GWT variable, because as you pointed out, GWT won’t obfuscate the String argument of eval() but WILL obfuscate the local variable declaration name.

My two cents. Also, the JSON library irks me for other reasons, such as the naming of methods ‘is*()’ that don’t return boolean, but rather either null or a cast. It sticks out given normal Java conventions, and leads to cumbersome looking code. I guess it’s the best they can do, if only Java had Scala’s Option types, pattern matching, and for-comprehension. :)

-Ray

Comment by Ryan Subscribed to comments via email
2008-02-12 14:47:38

Ok, I see what you’re getting at. Probably for your large datasets the JSON lib wouldn’t be appropriate unless it had an XPATH like feature. You should probably send that feature request over to the GWT guys.

Fortunately this article deals with simple feeds which are typically a list of Items. Something that the JSON library is perfectly suited to. I think this is the more common application of JSON. Even for large datasets its typical to load by page.

 
 
 
 
 
Comment by Matt Fetig
2009-11-30 13:32:22

Ray,

I agree with the points that you have made here except for one small issue. As far as I can tell the eval call is necessary to create a unique function name. If you know of a way to create a unique function name I would happily change it in my code. I tried writing a function to do this same thing until I ran into this same problem and went looking and found this class.

Thanks,
Matt

 
 
2008-02-07 23:45:08

[...] You can read the full post here. [...]

 
2008-02-12 02:24:53

[...] Blog bookmarks 02/12/2008 GWT Site » How to access Web Services with GWT [...]

 
Comment by vishal Subscribed to comments via email
2008-02-18 05:04:22

Can anybody tell me step by set process of how to make a application in gwt using java. From path setting to how to run everything i will be grateful to him. my mail id is vishal.sadani@gmail.com

Comment by Chris Fong
2008-02-18 09:10:13

I would suggest reading the GWT Getting Started guide.
http://code.google.com/webtool.....arted.html

 
 
Comment by Sziyu Subscribed to comments via email
2008-03-19 22:29:57

Excuse me.
Could someone tell me how should I write the server site code to reply a correct JSON data?

Thanks!
sziyu@yahoo.com.tw

 
Comment by Andre Yoshida
2008-03-25 20:13:36

Hi,

I’m just learning GWT and have Ryan’s book which is helping a great deal. I would like to integrate my GWT app with RESTlets using JSON representation. The JSONRequest technique in this forum would only work for Http GET – is this correct? I’m looking for a solution that would allow all Http method types to be used. I suppose I could use the GWT HttpRequest, but it appears that the GWT HttpRequest is limited in that it only supports methods GET and POST. I can probably get by with this limitation if I have to, but is there anything better out there?

Thanks!
Andre

Comment by Chris Fong
2008-03-26 09:20:13

I haven’t tried this myself, but have you looked at the gwt-rest project?

http://groups.google.com/group.....3e2abaee1e
http://code.google.com/p/gwt-rest/

 
Comment by Vikas
2008-06-18 02:24:35

You can achieve this by setting a property on the header. Something on the lines of
httprequestbuilder.setHeader(“X-HTTP-Method-Override”, “DELETE”);
The request can still go out as POST, but the header is set to DELETE (or even PUT- which ever is applicable)
The RestService could strip off the header and process accordingly.

Thanks,
Vikas

Comment by Gregory Lloyd
2010-01-15 08:21:12

Along this lines I have just started using Jersey the jax-rs RI which allows you to setup a servlet filter which will inspect a parameter and call the proper GET, POST, PUT, DELETE methods on your resources. You can also use Jersey to marshall JSON based on jaxb annotations.

 
 
 
Comment by Mark
2008-05-08 11:10:32

Is there any other way to access a web service with GWT except JSON? JSON would be very difficult for me to implement right now and doesn’t seem very mature.

-mark

Comment by Chris Fong
2008-05-10 08:47:03

Hi Mark,

Why would you say that JSON is not very mature? Anyway, it all depends on the web service API and what it supports. GWT can support calling XML web services as well, but you have to make sure you can get around the Same-Origin policy.

Comment by Gerardo Subscribed to comments via email
2012-09-17 07:43:17

Can you give me an example on “GWT can support calling XML web services”?
Thank you.

 
 
 
Comment by Wind Generator
2008-07-15 10:11:51

Excellent! I forwarded this blog post to my friend who could use some of the advice that you gave! Thanks again!

 
Comment by Teren
2008-07-16 11:15:06

Hm. I’ve implemented the above functions but when I call my web service, it seems I get an invalid label error in Firebug. I’ve tried to adding parentheses to the eval function but it doesn’t seem to work. Any thoughts?

 
 
Comment by Robert Willems Subscribed to comments via email
2008-07-29 06:02:14

Is it possible to return XML from the webservice? I’ve followed the example and it works like a charm. However the webservice i need to call can only return XML and i’m confused how to get this (as a string?) back to Java.

Comment by jlanza Subscribed to comments via email
2009-08-27 23:21:02

Hi Robert Willems,

Have you manage to solve your problem of accessing XML webservice and parsing the stuff?

TA.

 
 
Comment by Pierre Lavignotte
2008-09-15 17:47:46

Thanks for this code that is very clear and usefull.

Anyway, I’ve face (and solved) a problem.
As I was fetching UTF-8 data from a service, these data where showing some really bad looking characters in my HTML page.

I solved the problem by adding the following line in the JSONRequest.addScript() method :
scr.setAttribute(“charset”, “UTF-8″);

Cheers !

 
Comment by Sumved Shami Subscribed to comments via email
2009-01-08 23:46:40

Hello Chris

I am new to Web services and GWT. But, I am trying to run your example.

But, I am facing some basic problem.
I am able to get expected result while running the web service URI separately. That means, If I type “http://localhost:8080/GWTWebServices/resources/activities/1/” in my browser, I get the perfect result.

Now, I want to see that on browser. I simply want to see single resource to test the client. So what do I need to change in your piece of code. I think, I need to change JSONRequest class methods definition, but dont know what to make changes.

Can you please help me with this kind of scenario?

Thanking you.

Sumved Shami

 
Comment by Sumved Shami Subscribed to comments via email
2009-01-09 01:22:55

Can anyone help me to solve the above problem?

Sumved Shami

 
Comment by Tobias Reike Subscribed to comments via email
2009-01-23 12:01:48

Hi!
I really appreciate your article. I ran into the Same Origin Policy-”problem” a few days ago, when I tried to connect to the Yahoo Finance module to get quotes as CSV data. The problem is, that it doesn’t allow a callback parameter.
As I am quite new to GWT programming, I would like to ask, how could one receive these kinds of data via GWT?

Comment by fresher_GWT Subscribed to comments via email
2011-04-05 22:39:36

Hi Tobias, i am new to webservice and GWT as well can you please demo a webservice application example that make fair knowlage of webservice.

 
 
Comment by Bilousme
2009-11-18 02:07:02

I think this tutorial would be named “How to do http request with gwt”
Web service is not simply http request but a complex software system allowing interaction between systems. It use often soap and wsdl technologies.
For a good description of what a webservice is : http://en.wikipedia.org/wiki/Web_service

But good tutorial and good site!

Comment by Matt Fetig
2009-11-30 14:27:32

I disagree with both titles actually. This is more specifically how to get around the same origin policy(SOP) of modern browsers using a new concept called JSONP or JSON with Padding. Technically JSONP services are RESTful web services, so it is indeed a web service. If you would like to make an HTTP request like you have suggested in the title provided, you would want to use the included HTTPRequestBuilder. The only problem is that this must obey the SOP. If you would like to access services outside the origin you will have to create a server-side proxy, but the issue with this is that the target service can’t be authenticated because the request comes from the server and does not contain the client’s credentials. Also, if not implemented properly this can appear to the provider as a DOS attack because all requests are coming from the same machine.

 
 
Comment by metoo Subscribed to comments via email
2010-04-11 19:25:08

Is it possible to do the same thing with a POST instead of a GET? I’m not quite sure how to achieve this. Advice would be appreciated.

 
Comment by Isak Subscribed to comments via email
2010-09-18 15:35:12

Hi !

How can I realize an access to a Web Service, which responses a XML-Site. It doesn`t work with RequestBuilder.

 
Comment by IHateSoda
2011-05-10 14:32:45

Hi,

I access to a web service, but I don’t arrive to parse the XML response.

An idea ??

Thx

 
Comment by Robert La Ferla Subscribed to comments via email
2011-12-31 13:21:22

This example is very confusing because the actual code uses JavaScriptObject and not String.

Please update this code accordingly. I still cannot get it to work.

i.e.

public interface JSONRequestHandler
{
public void onRequestComplete( JavaScriptObject json );
}

and NOT:

public interface JSONRequestHandler
{
public void onRequestComplete( String json );
}

 
Comment by Robert La Ferla Subscribed to comments via email
2011-12-31 13:45:31

I have it working now. I hope this helps someone:

JSONRequest.get(url, new JSONRequestHandler() {

@Override
public void onRequestComplete(JavaScriptObject json) {
Log.info(“onRequestComplete()”);

JSONObject obj = new JSONObject(json);
Log.info(“obj=” + obj.toString());
}
});

Comment by Le Guenici
2012-10-26 02:06:52

Robert,

Thank you so so much for posting this piece of code.

I have been trying to make this work for hours until I saw your solution which is simple, but that one who is not very familiar with JSON cannot guess. Having the JSON calls work via script injection was critical for my project, as it was the only solution I had. And I could not find any relevant documentation/examples on how to retrieve the answer.

So, I say it again THANK YOU VERY VERY MUCH!

Le Guenici.

 
 
Comment by MBA in Gujarat
2012-07-19 21:56:19

I acknowledge with the factors that you have created here except for one little problem. As far as I can tell the eval contact is necessary to make a exclusive operate name. If you know of a way to make a exclusive operate name I would gladly modify it in my value.

 
Comment by Thorsten
2013-04-01 10:23:26

I constantly spent my half an hour to read this weblog’s content daily along with a cup of coffee.

 
Comment by general
2013-04-04 17:21:18

Magnificent items from you, man. I have have in mind your stuff previous to and you are
simply too excellent. I actually like what you’ve bought right here, really like what you are saying and the best way in which you assert it. You are making it entertaining and you still care for to stay it smart. I can’t wait to read much more from you.
That is really a great website.

 
Comment by Tweets
2013-04-09 20:46:07

Great info. Lucky me I came across your blog by accident
(stumbleupon). I have saved it for later!

 
2013-04-21 09:02:29

You need to be a part of a contest for one of the greatest blogs online.

I’m going to recommend this blog!

 
Comment by Pure Cleanse Detox
2013-05-02 15:22:50

I’m not sure where you’re getting your info, but great topic.
I needs to spend some time learning much more or
understanding more. Thanks for magnificent info I was looking for
this information for my mission.

 
Comment by make money youtube
2013-05-05 08:55:17

I absolutely love your blog and find most of your post’s to be what precisely I’m looking for.
Would you offer guest writers to write content to suit your needs?

I wouldn’t mind creating a post or elaborating on a few of the subjects you write with regards to here. Again, awesome web log!

 
Comment by seoorganics.net
2013-05-06 19:17:40

I’ve learn several just right stuff here. Definitely worth bookmarking for revisiting. I surprise how so much attempt you place to make this type of wonderful informative website.

 
Comment by design web site
2013-05-11 14:47:22

I am actually delighted to glance at this webpage posts which carries
plenty of valuable facts, thanks for providing these statistics.

 
Comment by writing service
2013-05-13 02:13:15

This site really has all the information I needed concerning this subject and didn’t know who to ask.

 
Comment by Pure Leverage
2013-05-14 16:00:35

Ηеllo it’s me, I am also visiting this site regularly, this site is really nice and the viewers are in fact sharing good thoughts.

My blog post … Pure Leverage

 
Comment by Best Hosting Plans
2013-06-06 19:29:30

Its like you read my mind! You appear to grasp a lot approximately this, such as you wrote
the book in it or something. I think that you just can do with
a few % to force the message house a bit, but instead of that, that is fantastic
blog. A fantastic read. I will definitely be back.

 
Comment by GoDaddy Promo Code
2013-06-18 12:15:35

What’s up, I would like to subscribe for this webpage to obtain most recent updates, therefore where can i do it please assist.

 
Comment by Ralph Lauren
2013-06-19 01:59:58

Wow, this article is pleasant, my sister is analyzing these things, so I am going to convey her.

 
Comment by social adr
2013-06-25 08:49:36

After I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and now every time a comment is added I recieve 4 emails with the exact
same comment. There has to be a way you are able to remove me from
that service? Thank you!

 
2013-06-26 11:07:06

What’s up to every one, for the reason that I am truly keen of reading this website’s post to be
updated daily. It carries fastidious information.

 
Comment by Burn The Fat Review
2013-06-27 06:51:15

Do you have a spam problem on this blog; I also am a blogger, and I was curious about your situation; we have developed some nice procedures and we are looking to
exchange methods with other folks, be sure to
shoot me an email if interested.

 
Comment by sexy thai women
2013-07-02 08:48:27

Excellent weblog here! Additionally your website
rather a lot up very fast! What host are you the use of?
Can I get your associate link to your host? I desire my website loaded up as quickly as yours lol

 
Comment by Rails Hosting
2013-07-02 10:56:41

Actually no matter if someone doesn’t know then its up to other viewers that they will help, so here it occurs.

 
Comment by Get A Domain Name
2013-07-02 17:31:17

I really like your blog.. very nice colors & theme. Did you make this website
yourself or did you hire someone to do it for you? Plz reply as I’m looking to create my own blog and would like to find out where u got this from. cheers

 
Comment by Web Hosting Domain
2013-07-05 08:00:50

Hi there, I check your blog regularly. Your humoristic style
is awesome, keep up the good work!

 
Comment by candy crush cheats
2013-07-08 08:04:48

Hi! Someone in my Facebook group shared this website with
us so I came to give it a look. I’m definitely loving the information. I’m book-marking and will be tweeting this to my followers!

Exceptional blog and outstanding style and design.

 
Comment by website
2013-07-09 05:42:31

great publish, very informative. I ponder why
the opposite experts of this sector do not understand this.

You must proceed your writing. I am sure, you’ve a huge readers’ base
already!

 
Comment by Bluehost Coupon
2013-07-12 19:03:56

This design is wicked! You obviously know how to keep a reader entertained.
Between your wit and your videos, I was almost moved to start my own blog (well, almost.
..HaHa!) Wonderful job. I really loved what you had
to say, and more than that, how you presented it.
Too cool!

 
Comment by Bluehost Coupon
2013-07-15 18:52:59

It’s fantastic that you are getting thoughts from this piece of writing as well as from our dialogue made at this time.

 
2013-07-16 07:56:31

Howdy would you mind letting me know which web host you’re working with? I’ve loaded your blog in 3 completely
different web browsers and I must say this blog loads
a lot faster then most. Can you recommend a good hosting provider at a reasonable price?
Thanks a lot, I appreciate it!

 
Comment by HostMonster Coupon
2013-07-16 15:15:52

I’ve read several just right stuff here. Definitely value bookmarking for revisiting. I wonder how much attempt you set to make this kind of great informative web site.

 
2013-07-17 00:06:01

Additionally, the surgeon will provide a rundown of pre-operation instructions that
you should follow. On the plus side, it may help you to quit for good and save you even more money on top of what was already salvaged because of breast augmentation in Thailand.
The scars won’t disappear completely, but they’ll get
pretty darn hard to see after a few weeks.

 
Comment by HostMonster Coupon
2013-07-17 18:08:27

Good day! Would you mind if I share your blog with my myspace
group? There’s a lot of people that I think would really enjoy your content. Please let me know. Cheers

 
Comment by More Info
2013-07-18 15:36:05

Thanks regarding giving these superb articles.

 
2013-07-20 07:22:23

Greetings! I know this is kinda off topic however , I’d figured I’d ask.
Would you be interested in trading links or maybe guest writing a blog article or vice-versa?

My site covers a lot of the same topics as yours and I think we could greatly benefit from each other.
If you might be interested feel free to send me an e-mail.
I look forward to hearing from you! Fantastic blog by the way!

 
Comment by Godaddy Promo Codes
2013-07-26 11:33:29

When someone writes an post he/she maintains the thought of a user in his/her mind that how a user can
be aware of it. Thus that’s why this post is perfect. Thanks!

 
Comment by Godaddy
2013-07-29 11:27:46

Hello there! Do you use Twitter? I’d like to follow you if that would be okay. I’m definitely enjoying your blog and
look forward to new posts.

 
Comment by Just Host
2013-07-31 20:06:18

I leave a response each time I appreciate a article on a site
or if I have something to add to the conversation. It
is a result of the fire displayed in the post I read.
And on this article How to access Web Services with GWT | GWT Site.
I was actually moved enough to drop a thought ;) I
do have 2 questions for you if it’s allright. Is it simply me or does it look as if like a few of the comments appear like they are coming from brain dead visitors? :-P And, if you are writing at additional online social sites, I’d like to follow anything fresh you have to post.
Could you list all of your social sites like your Facebook page,
twitter feed, or linkedin profile?

 
Comment by site
2013-08-04 15:39:32

I am regular reader, how are you everybody? This piece of writing posted at this
web site is genuinely good.

 
Comment by Webhosting
2013-08-06 04:52:51

Asking questions are truly fastidious thing if you are not
understanding anything entirely, but this article presents good understanding yet.

 
Comment by website
2013-08-07 01:47:04

This is really interesting, You are a very skilled blogger.
I’ve joined your feed and look forward to seeking more of your fantastic post. Also, I’ve shared your website in my social networks!

 
2013-08-15 16:55:16

Hi, good post! This is just what my partner and I wanted for
our university task, consequently many thanks greatly. My friend and I tend not to generally comment although this
was a real pain relief that I could not resist.

Regards,
Marc

 
2013-08-31 10:35:26

About WhatsApp.cm

Our site introduces you the information and business about Whatsapp, including Whatsapp downloading, Free Whatsapp
Downloading, Whatsapp news and anecdote, the ways to Earn Money Through Whatsapp,
etc. We will update the related information
occasionally. And we really need your attention and support.
Hope our endeavor will bring you a colorful chatting environment!

 
Comment by How to know
2013-09-03 06:45:20

What’s up to every one, since I am truly keen of reading
this blog’s post to be updated daily. It contains pleasant data.

 
2013-09-12 07:43:26

Piece of writing writing is also a fun, if you be acquainted
with afterward you can write otherwise it is complicated to write.

 
Comment by their explanation
2013-09-22 23:00:35

What’s up, everything is going perfectly here and ofcourse every
one is sharing information, that’s in fact fine, keep up writing.

 
Comment by Portable Loaders
2013-09-23 01:17:55

You need to fill in the same IFRAME, or you can stringy the JSON and re parse it, which is another workaround I’ve seen individuals use.

 
2013-11-15 12:21:26

The earliest & most important activity, which customers have
to do is that they’ve to fill out the questionnaire at these Web sites.
In all likelihood before you set up a firm first date you
might decide to chat on the phone. For the latest research
and step by step advice on overcoming dating fears
and shyness read, Love in 90 Days: The Essential Guide to Finding Your Own True Love now out in paperback.

 
2013-12-13 14:49:22

Hi, Neat post. There’s a problem along with your web site in internet explorer, may check this?
IE still is the marketplace leader and a large component of people will omit your wonderful writing because of this problem.

 
Comment by zip lining reviews
2013-12-17 08:32:41

Wonderful article! This is the kind of information that
should be shared across the net. Disgrace on Google for not positioning this put up higher!
Come on over and discuss with my web site . Thank you
=)

 
Comment by free email
2014-01-07 01:05:43

I was very happy to discover this site. I want to to thank you for your time for this
particularly wonderful read!! I definitely loved every part of it and I have you book-marked to look at new information in your blog.

 
2014-01-26 19:30:44

With havin so much content and articles do you
ever run into any problems of plagorism or copyright infringement?
My blog has a lot of unique content I’ve either written myself or outsourced but it seems a lot of
it is popping it up all over the internet without my agreement.
Do you know any solutions to help prevent content from being stolen?
I’d certainly appreciate it. Many thanks, to you!

 
Comment by Twitter Followers
2014-02-05 00:25:31

My family members all the time say that I am killing my
time here at net, except I know I am getting experience every day by
reading thes fastidious articles or reviews.

Here is my web site Twitter Followers

 
2014-02-11 17:27:43

I’m truly enjoying the design and layout of your website.
thanks for share..

 
2014-02-20 09:50:26

Un gros merci pour partager. Un reportage une fois de plus très intéressent !

Bonne callumet

my webpage; Vente De Pipes Bruyere

 
2014-02-21 13:51:02

I was recommended this web site by my cousin. I’m not positive whether or
not this submit is written through him as nobody else know such designated about my problem.
You’re amazing! Thanks!

My web-site Free Twitter Followers

 
Comment by Pole Barn Kits
2014-02-25 22:23:19

In fact, they steel building ideas combine the flexibility of the material
steel. Take a look at one of the most recognized names in the industry
for top-quality. It gives you various benefits.
Offer better flexibilityIn the steel building ideas traditional way of construction.

 
Comment by torrent
2014-03-19 10:28:54

Actually when someone doesn’t be aware of after that its up to
other people that they will assist, so here it happens.

 
Comment by ziom.wc2.us
2014-03-23 22:50:21

I do agree with all the ideas you’ve offered on your post.
They are really convincing and can certainly work.
Nonetheless, the posts are very quick for beginners. May you please lengthen
them a little from next time? Thanks for the post.

 
Comment by Sallie
2014-04-01 23:45:24

I got this website from my buddy who shared with me regarding this web page and now this
time I am browsing this website and reading very informative articles or reviews here.

 
Name (required)
E-mail (required - never shown publicly)
URI
Subscribe to comments via email
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.