【问题标题】:OkHttp networkInterceptors does not catch client connect timeouts?OkHttp networkInterceptors 不捕获客户端连接超时?
【发布时间】:2018-04-30 17:55:54
【问题描述】:

我一直在为 OkHttp 客户端测试 out 应用程序与网络拦截器。我创建了一个简单的拦截器,如果发生错误,它只会记录延迟和错误。

我发现如果我故意设置:

client.setConnectTimeout(0, TimeUnit.MILLISECONDS);

只有应用拦截器会拦截和链接请求。如果我将拦截器添加为网络拦截器,我的 intercept() 方法永远不会在连接超时时命中。

为什么会这样?

这里的文档https://github.com/square/okhttp/wiki/Interceptors 的区别对我来说并不是很明显。

我通过调用添加拦截器:

client.interceptors().addAll(interceptors);

或:

client.networkInterceptors().addAll(interceptors);

【问题讨论】:

    标签: java networking retrofit interceptor okhttp


    【解决方案1】:

    0 的超时意味着根本没有超时:将允许调用无限期地运行。

    请注意,拦截器通常在响应正文被流式传输之前返回。如果在读取响应正文时发生超时,网络拦截器将不会观察到它。

    最后在所有应用拦截器之后但在任何网络拦截器之前建立连接。如果连接超时,网络拦截器将不会被执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 2021-08-18
      • 2018-12-19
      相关资源
      最近更新 更多