Кэширование ответов с использованием dropbox-sdk-java и OkHttp не работает - PullRequest
0 голосов
/ 05 июля 2019

Я использую 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.

У вас есть идея, в чем может быть проблема?

...