2017-11-17 13 views
0

私は、OkHttpクライアントのためのOut Application対Network Interceptorsをテストしています。エラーが発生した場合にレイテンシとエラーを記録する単純なインターセプタを作成しました。OkHttp networkInterceptorsはクライアントの接続タイムアウトを捕まえていませんか?

私は意図的に設定した場合、ことがわかった:

client.setConnectTimeout(0, TimeUnit.MILLISECONDS); 

唯一のアプリケーションインターセプタはインターセプトし、要求をチェーンします。インターセプタをネットワークインターセプタとして追加すると、インターセプト()メソッドが接続タイムアウトにヒットすることはありません。

なぜこのような場合は?

ここでの文書の区別は、私には明らかではありません。

私は呼び出すことでインターセプタを追加している:0のタイムアウトは全くタイムアウトなしを意味し

client.networkInterceptors().addAll(interceptors); 

答えて

0

:呼び出しが無期限に実行することが許可されます。

client.interceptors().addAll(interceptors); 

かを

インターセプタは、通常、応答本体がストリーミングされる前に戻ってくることに注意してください。レスポンスボディを読み取っているときにタイムアウトが発生した場合、ネットワークインターセプタはそれを監視しません。

最後に、すべてのアプリケーションインターセプタの後で、ネットワークインターセプタの前に接続が確立されます。接続時にタイムアウトが発生すると、ネットワークインターセプタは実行されません。

関連する問題