我创建了一个非常简单的 servlet,它使用 HTTP Post 方法。我已经使用一个简单的 HTML 表单在我的本地 Apache Tomcat 服务器上对其进行了测试。我想将它与我的 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(https://code.google.com/p/gwtquery/wiki/Ajax#CORS_%28Cross_Origin_Resource_Sharing%29)
它总是在使用我的 test.html 的浏览器上工作,但不是来自我的应用程序。虽然,onResponseReceived 方法总是被调用
谢谢
KKM