GWT:HTTP请求失败时会发生什么

时间:2013-08-31 06:53:00

标签: gwt

我正在使用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问题,我的代码就可以了。)

2 个答案:

答案 0 :(得分:2)

这是预期的行为;请参阅:https://code.google.com/p/google-web-toolkit/issues/detail?id=2858

中的评论

答案 1 :(得分:1)

根据文档onResponseReceived在两种情况下都被调用(成功与否)。 当我的浏览器尝试下载某些内容时,我在旧版浏览器上获得相同的内容。 http请求未完成。所以也许尝试等待直到响应完成,也许尝试添加大约200毫秒。在某处延迟。

在我的应用程序中,当状态代码为0时我忽略。