GWT RequestBuilder发布响应返回0 StatusCode

时间:2013-11-10 06:38:45

标签: gwt servlets tomcat7

我创建了一个使用HTTP Post方法的非常简单的servlet。我使用一个有效的简单HTML表单在我的本地Apache Tomcat服务器上测试了它。我想将它与我的GWT应用程序集成。我可以使用FormPanel调用它 - 在这种情况下,它会下载内容,并且我的浏览器窗口中有一个闪烁。

我知道我需要使用RequestBuilder来访问它。但我在我的重载public void onResponseReceived(请求请求,响应响应)方法中的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引用(https://code.google.com/p/gwtquery/wiki/Ajax#CORS_%28Cross_Origin_Resource_Sharing%29

之后更改我的servlet

它始终适用于使用我的test.html的浏览器,但不适用于我的应用程序。虽然,onResponseReceived方法总是被称为

由于

KKM

1 个答案:

答案 0 :(得分:1)

您是否以某种方式检查了应用中的通话是否违反了同源策略(http://en.wikipedia.org/wiki/Same-origin_policy)? GWT RequestBuilder在内部使用XMLHttpRequest,因此它确实属于SOP。

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