【问题标题】:Android correct way to use OKHTTP singleton for parallel queries with cookiesAndroid 使用 OKHTTP 单例与 cookie 进行并行查询的正确方法
【发布时间】:2014-11-09 06:33:25
【问题描述】:

我正在开发一个 android 项目,我计划用 OKHTTP 客户端替换 Apache httpclient 实现。我想知道如何创建一个全局客户端,该客户端可用于不同活动和服务中的网络请求,这些活动和服务将使用客户端的多线程。我应该创建一个 OKHTTPClient 的单例对象并在我的代码中重用它吗?

另外,我应该在哪里将 cookiestore 添加到请求中,在客户端的全局定义中,以便我所有请求都有可用的 cookie,或者在单个活动或服务中形成请求时?

【问题讨论】:

    标签: android cookies android-networking okhttp


    【解决方案1】:

    使用 OkHttp 的一般方法是一个 OkHttp 实例和一个 HttpResponseCache 实例。是否需要将其创建为单例取决于您的应用程序的要求。例如,可以在 Android 的 Application.onCreate() 的子类中创建 OkHttp 的单个实例,在这种情况下,如果您将 Android 应用程序的 Application 类的子类设为单例,则它不需要是单例。

    引用他们的wiki

    "大多数应用程序应该只调用一次 new OkHttp(),配置它 使用他们的缓存,并在任何地方使用相同的实例。 "

    一旦你创建了你的 OkHttp 实例,你就可以使用他们的setCookieHandler() API 方法来添加一个持久的 cookie 存储,它将在所有后续的 HTTP 请求中使用。有关实现与 OkHttp 一起使用的 cookiestore 的更多详细信息,请参阅this SO answer

    【讨论】:

    • 为了完整起见,文档的其余部分:“否则,两个缓存实例将相互踩踏,破坏响应缓存,并可能使您的程序崩溃。”
    • 如果我对缓存完全不感兴趣怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多