GWT RequestBuilder响应后返回0状态代码

GWT RequestBuilder响应后返回0状态代码,gwt,servlets,tomcat7,Gwt,Servlets,Tomcat7,我创建了一个使用HTTPPOST方法的非常简单的servlet。我已经在本地ApacheTomcat服务器上使用一个简单的HTML表单对它进行了测试。我想将它与我的GWT应用程序集成。我可以使用FormPanel调用它——在这种情况下,它下载内容,并且在我的浏览器窗口中闪烁 我知道我需要使用RequestBuilder来访问它。但是重载的public void onResponseReceived(Request-Request,response-response)方法中的我的response.

我创建了一个使用HTTPPOST方法的非常简单的servlet。我已经在本地ApacheTomcat服务器上使用一个简单的HTML表单对它进行了测试。我想将它与我的GWT应用程序集成。我可以使用FormPanel调用它——在这种情况下,它下载内容,并且在我的浏览器窗口中闪烁

我知道我需要使用RequestBuilder来访问它。但是重载的public void onResponseReceived(Request-Request,response-response)方法中的我的response.getStatusCode()总是将状态返回为0,response.getText()返回null

    String url = "http://localhost:8080/servlets/servlet/ShapeColor";
    builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url));


    try {
        String json = getJSONString();
        //builder.setTimeoutMillis(10000);
        builder.setHeader("Access-Control-Allow-Origin", "*");


        builder.setHeader("Content-type", "application/x-www-form-urlencoded");
        builder.sendRequest(json, new RequestCallback() {

            @Override
            public void onError(Request request, Throwable exception) {
                 Window.alert("Couldn't retrieve JSON");
            }

            @Override
            public void onResponseReceived(Request request, Response response) {
              if (200 == response.getStatusCode()) {
               System.out.println("res:"+response.getText());
              } else {
                  System.out.println("err: " + response.getStatusCode()+","+response.getText());
              }
            }
          });
        //Request response = builder.send();

    } catch (RequestException e) {
        // TODO Auto-generated catch block

    }
我尝试了很多事情,包括根据CORS引用()更改servlet

它总是在使用my test.html的浏览器上工作,但不是从我的应用程序。尽管如此,onResponseReceived方法始终被调用

谢谢


KKM

您是否检查了您在应用程序中的呼叫是否在某些方面违反了同源策略()?GWT RequestBuilder在内部使用XMLHttpRequest,因此它属于SOP

您的GWT应用程序是否在与servlet相同的域(服务器+端口)中运行?它是否使用相同的协议(https或http)