Я использую dropbox-sdk-java , используя OkHttp для выполнения запросов в Android и хочу использовать механизм кэширования, реализованный в OkHttp.
Я создаю DbxClientV2
, используя следующий код:
private DbxClientV2 createDropboxClient(final String accessToken) {
final Cache cache = new Cache(new File(context.getCacheDir(), "HttpCacheDropbox"), 1024 * 1024 * 10);
final OkHttpClient okHttpClient = OkHttp3Requestor //
.defaultOkHttpClientBuilder() //
.cache(cache) //
.addNetworkInterceptor(provideCacheInterceptor()) //
.addInterceptor(provideOfflineCacheInterceptor()) //
.addInterceptor(httpLoggingInterceptor(context)) //
.connectTimeout(CONNECTION.getTimeout(), CONNECTION.getUnit()) //
.readTimeout(READ.getTimeout(), READ.getUnit()) //
.writeTimeout(WRITE.getTimeout(), WRITE.getUnit()) //
.build();
final DbxRequestConfig requestConfig = DbxRequestConfig //
.newBuilder("Test-Android/" + BuildConfig.VERSION_NAME) //
.withUserLocale(Locale.getDefault().toString()) //
.withHttpRequestor(new OkHttp3Requestor(okHttpClient)) //
.build();
return new DbxClientV2(requestConfig, accessToken);
}
cacheInterceptors
реализованы так, как описано в этом посте: https://stackoverflow.com/a/45431753/825532
Тогда я сделаю, например, запрос на загрузку с использованием следующего фрагмента:
...
.createDropboxClient(accessToken) //
.download(file.getPath()) //
.download(...)
Сам запрос работает, и перехваченные функции вызываются, но само кеширование не работает.
Если я использую okHttpClient
напрямую, чтобы сделать запрос GET
к случайному серверу, ответ кэшируется, но не использует DbxClientV2
.
У вас есть идея, в чем может быть проблема?