Your server sends an array with a single item being an element with a 
"Hello" property, so your client code should use an 
AsyncCallback<JsArray<X>> where X is some JavaScriptObject subclass with a 
JSNI method getting the "Hello" property

class X extends JavaScriptObject {
    protected X() { /* required by JSO */ }

    public final native String getHello() /*-{ return this.Hello; }-*/;
}

...

jsonprb.requestObject(url, new AsyncCallback<JsArray<X>>() {
    @Override
    public void onSuccess(JsArray<X> result) {
       X firstX = result.get(0);
       Window.alert("Hello " + firstX.getHello());
    }
...
}

On Monday, March 26, 2012 4:05:42 AM UTC+2, Blake wrote:
>
> Greetings,
>
> I have a GWT app talking to a Java servlet just fine except I can't seem 
> to pass data.  I've already spent a day on it.  Any help would be greatly 
> appreciated.
>
> I am using JsonpRequestBuilder and attempting to get around SOP.  Here is 
> my server code:
>
> public class GWTServlet extends HttpServlet {
> protected void processRequest(​HttpServletRequest request, 
> HttpServletResponse response)
>  throws ServletException, IOException {
> String callback = request.getParameter("​callback");
>  PrintWriter out = response.getWriter();
> try {
> out.print(callback + "([{\"Hello\": \"world\"}]);");
>  } finally { 
> out.close();
>  }
> }....
>
> Here is my GWT code:
>
> public void onClick(ClickEvent event) {
>
> JsonpRequestBuilder jsonprb= new JsonpRequestBuilder();
>
>  
> jsonprb.requestObject("http://​localhost:8084/XXX/GWTServlet<http://localhost:8084/XXX/GWTServlet>
> "​, 
>
>  new AsyncCallback() {
>
>               @Override
>
>               public void onFailure(Throwable caught) {
>
>                   Window.alert("Failure getting JSONP directly from remote 
> server");
>
>               }
>
>
> @Override
>
>  public void onSuccess(Object result) {
>
> Window.alert("Got response");
>
> JavaScriptObject res = (JavaScriptObject) result;
>
>  Window.alert(res.toSource());
>
> }
>
>           });
>
>
> I get the "Got response" message.  I am also able to put break points on 
> the frontend or backend and it gets to where I expect.  The problem is that 
> I can't seem to get at the data send from the server.  I don't know what to 
> do in onSuccess().
>
> Of course, once I get this working I will have the same challenge going 
> the other way.  Help is greatly appreciated.
>
> Blake McBride
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/-r5aW6rcfGMJ.
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.

Reply via email to