【问题标题】:in OkHTTP how do I set the keep-alive to false?在 OkHTTP 中,如何将 keep-alive 设置为 false?
【发布时间】:2020-11-23 18:02:12
【问题描述】:

OkHttpClient 的默认行为是将 keep-alive 设置为 true。 对于我们的特定用例,我需要将其设置为 false。

我在 Java 源代码中没有找到任何设置来执行此操作。

有人遇到过这种情况吗?

我在 OkHttpClient 3.8.1

谢谢

【问题讨论】:

    标签: okhttp


    【解决方案1】:

    根据https://github.com/square/okhttp/issues/2031

    你可以像这样运行演示代码

    okHttpClient.setConnectionPool(new ConnectionPool(0, 0));
    

    或添加像 Connection: close 这样的标题。

    为您提供此行为线索的源代码是: https://github.com/square/okhttp/blob/480c20e46bb1745e280e42607bbcc73b2c953d97/okhttp/src/main/kotlin/okhttp3/internal/connection/RealConnectionPool.kt#L108

    【讨论】:

    • 使用Connection: close 作为标题。如果您想在任何地方使用它,您可以在拦截器中执行此操作。
    • Jason,我尝试设置此标头,但没有成功。这将是一个不错的选择,因为我不必修改连接池。
    • 我不得不承认,这种不重用连接的策略有很大的性能下降。仅在绝对必要时使用。
    • 添加像 Connection: close 这样的标题。表示要求网络服务器关闭连接,但不禁用保活。
    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 2013-05-08
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多