在okhttp3中使用cookie时,CookieJar是否比拦截器具有任何性能优势?

时间:2017-07-20 06:37:33

标签: android cookies retrofit okhttp okhttp3

我知道在okhttp3中基本上有两种保存cookie的方法: -

Using an Interceptor with Sharedpreferences
Or a CookieJar implementation with SharedPreferences. 

然而,我不知道的是,这些操作中的哪一项更加昂贵

直观地,似乎调用通过SharedPreferences的拦截器可能更加昂贵但我不确定CookieJar是否通过{{1}会有任何不同。

谢谢!

2 个答案:

答案 0 :(得分:2)

使用cookies,您需要在每个入站和出站请求中查看它们,这正是拦截器的作用。但是,请记住,与仅与https,域,到期相关时,cookie可能非常复杂。从这个意义上说,CookieJar实际上可能会更慢,因为它会为你处理一切,但它非常值得。

以下是使用带有OkHttp 3

的cookie jar的示例
import okhttp3.JavaNetCookieJar;

CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
JavaNetCookieJar cookieJar = new JavaNetCookieJar(cookieManager);

OkHttpClient client = new OkHttpClient.Builder().cookieJar(cookieJar).build();

答案 1 :(得分:1)

性能差异可以忽略不计。您应该使用CookieJar,因为它可以让OkHttp为您完成更多工作。