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 に答える