我正在开发一个Android项目,我计划用OKHTTP客户端替换Apache httpclient实现。我想知道如何创建一个全局客户端,可以用于将使用客户端多线程的不同活动和服务中的网络请求。我应该创建一个OKHTTPClient的单例对象并在我的代码中重用它吗?
此外,我应该在哪里将cookiestore添加到请求中,在客户端的全局定义中,以便我所有请求都可以使用cookie或在个人活动或服务中形成请求?
答案 0 :(得分:19)
使用OkHttp的一般方法是一个带有一个HttpResponseCache实例的OkHttp实例。是否需要将其创建为单例取决于应用程序的要求。例如,OkHttp的单个实例可以在Android的Application.onCreate()的子类中创建,在这种情况下,如果你制作Android应用程序,它不需要是一个单例。 Application类的子类是一个单例。
引用他们的wiki:
"大多数应用程序应该只调用一次新的OkHttp(),配置它 使用他们的缓存,并在任何地方使用相同的实例。 "
创建OkHttp实例后,您可以使用他们的setCookieHandler()
API方法添加持久性Cookie存储,该存储将在所有后续HTTP请求中使用。有关实现与OkHttp一起使用的cookiestore的更多详细信息,请参阅this SO answer。