我正在使用RequestBuilder.send()发送HTTP请求。我希望在onResponseReceived()中看到成功的响应,并且错误会返回onError()。但那不是我所看到的。无论成功与否,GWT都会调用onResponseReceived()。
有谁知道我应该期待什么?您是否有任何可以帮助我更好地检测和报告错误的信息?
以下是一些示例代码:
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
Header[] debugHeaders = response.getHeaders();
String debugHeaders1 = response.getHeadersAsString();
int debugStatusCode = response.getStatusCode();
String debugStatusText = response.getStatusText();
String debugText = response.getText();
handleResponse(response);
}
@Override
public void onError(Request request, Throwable exception) {
reportError();
}
});
我可以通过禁用Wi-Fi强制我的电脑出错。在那种情况下,调用onResponse()。 getHeaders()返回一个长度为1的数组,唯一的条目设置为null。 getHeadersAsString返回“”。 getStatusCode返回0. getStatusText()返回“”。 getText()返回“”。
如果总是如此,我可以在我的代码中查找。但是,我希望不同的浏览器,不同的错误等会导致不同的结果。有没有什么好方法可以始终检测错误?
(只要没有HTTP问题,我的代码就可以了。)
答案 0 :(得分:2)
这是预期的行为;请参阅:https://code.google.com/p/google-web-toolkit/issues/detail?id=2858
中的评论答案 1 :(得分:1)
根据文档onResponseReceived
在两种情况下都被调用(成功与否)。
当我的浏览器尝试下载某些内容时,我在旧版浏览器上获得相同的内容。 http请求未完成。所以也许尝试等待直到响应完成,也许尝试添加大约200毫秒。在某处延迟。
在我的应用程序中,当状态代码为0时我忽略。