1

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

4

2 回答 2

2

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

于 2013-08-31T13:56:08.717 回答
1

根据文档onResponseReceived在两种情况下都会调用(成功与否)。当我的浏览器试图去下载一些东西和上一个时,我在旧浏览器上得到了同样的结果。http 请求未完成。所以也许尝试等到响应完成,也许尝试增加一些 200 毫秒。延迟某处。

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

于 2013-08-31T10:24:12.753 回答