Я попытался сделать следующее, чтобы реализовать сессионный повар ie в Android
@Provides
AuthCookieStore getAuthCookieStore() {
return new AuthCookieStore(getApplicationContext());
}
@Singleton
@Provides
SharedCookieJar getSharedCookieJar() {
return new SharedCookieJar(getAuthCookieStore());
}
Это мой AppModule.
SharedCookieJar выглядит следующим образом.
public class SharedCookieJar implements CookieJar {
private AuthCookieStore cookieStore;
@Inject
public SharedCookieJar(AuthCookieStore cookieStore) {
this.cookieStore = cookieStore;
}
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
cookieStore.put(new CookieStoreModel(cookies));
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> validCookies = new ArrayList<>();
if (cookieStore.get() != null) {
for (Cookie cookie : cookieStore.get().getCookies()) {
if (cookie.expiresAt() < System.currentTimeMillis()) {
} else {
validCookies.add(cookie);
}
}
}
return validCookies;
}
}
Вот мой класс RestService
protected Context context;
protected EventBus eventBus;
protected Retrofit retrofit;
protected TraxSourceRestInterface restInterface;
protected OkHttpClient.Builder clientBuilder;
protected ObjectMapper objectMapper;
private SharedCookieJar sharedCookieJar;
А вот мой клиент и конструктор OkHttp.
clientBuilder = new OkHttpClient.Builder();
clientBuilder.connectTimeout(10, TimeUnit.MINUTES);
clientBuilder.readTimeout(10, TimeUnit.MINUTES);
clientBuilder.writeTimeout(10, TimeUnit.MINUTES);
clientBuilder.cookieJar(sharedCookieJar);
Но я получаю нулевой повар ie банка.
java.lang.NullPointerException: cookieJar == null
Может кто-нибудь помочь?
Также есть ли другой способ обработки сеанса повара ie в Android?