У меня есть несколько потоков, вызывающих один и тот же API с разными параметрами.Я хочу кешировать это.Использование кэша в ohttp приводит к следующей ошибке.
java.io.IOException: failed to rename C:\Regression360\jiracache\journal to C:\Regression360\jiracache\journal.bkp
Я считаю, что это известная ошибка в okhttp.
Мой код для клиента:
private int cacheSize = 10 * 1024 * 1024;
private String cacheFileName = "C:\\Regression360";
\*not relevant parts skipped\*
OkHttpClient client = new OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(provideCacheInterceptor())
.sslSocketFactory(trustAllSslSocketFactory, (X509TrustManager) trustAllCerts[0])
.retryOnConnectionFailure(true).connectionSpecs(Collections.singletonList(spec)).build();
Interceptor provideCacheInterceptor () {
return new Interceptor() {
@Override
public Response intercept (Chain chain) throws IOException {
Response response = chain.proceed( chain.request() );
CacheControl cacheControl = new CacheControl.Builder()
.maxAge( 2, TimeUnit.MINUTES )
.build();
return response.newBuilder()
.header("Cache-Control", cacheControl.toString() )
.build();
}
};
}
Есть ли что-то, что я здесь скучаю?Можно ли кешировать многопоточные звонки?