mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-07 18:08:49 +00:00
HttpClient: Retry request once on empty result body.
This commit is contained in:
parent
7687f5424d
commit
eb026a965f
1 changed files with 16 additions and 0 deletions
|
@ -133,6 +133,21 @@ public final class HttpClient {
|
|||
}
|
||||
};
|
||||
|
||||
final Interceptor retryInterceptor = new Interceptor() {
|
||||
@Override
|
||||
public Response intercept(final Chain chain) throws IOException {
|
||||
final Request request = chain.request();
|
||||
final Response response = chain.proceed(request);
|
||||
if (response.isSuccessful() && response.peekBody(1).bytes().length == 0) {
|
||||
log.info("Got empty response, retrying {}", request.url());
|
||||
response.close();
|
||||
return chain.proceed(request);
|
||||
} else {
|
||||
return response;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
final OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
||||
builder.followRedirects(false);
|
||||
builder.followSslRedirects(true);
|
||||
|
@ -140,6 +155,7 @@ public final class HttpClient {
|
|||
builder.writeTimeout(30, TimeUnit.SECONDS);
|
||||
builder.readTimeout(30, TimeUnit.SECONDS);
|
||||
builder.addNetworkInterceptor(loggingInterceptor);
|
||||
builder.addInterceptor(retryInterceptor);
|
||||
builder.addInterceptor(xmlEncodingInterceptor);
|
||||
OKHTTP_CLIENT = builder.build();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue