瀏覽代碼

retrofit2+okhttp3中添加cookiejar

zengjiebin 7 年之前
父節點
當前提交
7927320418

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java

@@ -2,6 +2,7 @@ package com.sheep.gamegroup.di.modules;
 
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.api.StringConverterFactory;
+import com.sheep.gamegroup.model.cookie.CookieManager;
 import com.sheep.gamegroup.model.util.AddPuplicParameIntercept;
 import com.sheep.gamegroup.model.util.CacheInterceptor;
 import com.sheep.gamegroup.model.util.EntityUtils;
@@ -17,7 +18,6 @@ import javax.inject.Singleton;
 import dagger.Module;
 import dagger.Provides;
 import okhttp3.OkHttpClient;
-import okhttp3.logging.HttpLoggingInterceptor;
 import retrofit2.Retrofit;
 import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
 import retrofit2.converter.gson.GsonConverterFactory;
@@ -36,6 +36,7 @@ public class NetModule {
         OkHttpClient okhttpClient = new OkHttpClient.Builder()
                 .connectTimeout(5, TimeUnit.SECONDS)
                 .readTimeout(20,TimeUnit.SECONDS)
+                .cookieJar(new CookieManager(SheepApp.getInstance()))
                 .addInterceptor(new AddPuplicParameIntercept())
                 .addInterceptor(new CacheInterceptor())
                 .addInterceptor(loggingInterceptor)

+ 42 - 0
app/src/main/java/com/sheep/gamegroup/model/cookie/CookieManager.java

@@ -0,0 +1,42 @@
+package com.sheep.gamegroup.model.cookie;
+
+import android.content.Context;
+
+import com.sheep.gamegroup.util.ListUtil;
+import com.zhy.http.okhttp.cookie.store.PersistentCookieStore;
+
+import java.util.List;
+
+import okhttp3.Cookie;
+import okhttp3.CookieJar;
+import okhttp3.HttpUrl;
+
+/**
+ * Created by realicing on 2018/8/29.
+ * realicing@sina.com
+ */
+public class CookieManager implements CookieJar {
+
+
+    private static PersistentCookieStore cookieStore;
+
+    public CookieManager(Context context) {
+        if (cookieStore == null) {
+            cookieStore = new PersistentCookieStore(context);
+        }
+    }
+
+
+    @Override
+    public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
+        if (!ListUtil.isEmpty(cookies)) {
+            cookieStore.add(url, cookies);
+        }
+    }
+
+    @Override
+    public List<Cookie> loadForRequest(HttpUrl url) {
+        return cookieStore.get(url);
+    }
+
+}