-1
Это сообщение об ошибке из OkHttp v3.4.1 уже обсуждался несколько раз, и каждый раз, когда я читал об этом, люди не приближались тело ответа:OkHttp: соединение с http://example.com/ было утечено. Вы забыли закрыть тело ответа?
WARNING: A connection to http://www.example.com/ was leaked. Did you forget to close a response body?
Но мой код выглядит как это:
private String executeRequest(Request request) throws IOException {
Response response = httpClient.newCall(request).execute();
try (ResponseBody responseBody = response.body()) {
String string = responseBody.string();
logger.debug("Result: {}", string);
return string;
}
}
Так что responseBody.close()
всегда называется. Почему я получил ошибку выше? я настроил пользовательский JWT перехватчик, но я не вижу, как это может вызвать проблемы:
public class JwtInterceptor implements Interceptor {
private String jwt;
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (jwt != null) {
request = request.newBuilder()
.addHeader("Authorization", "Bearer " + jwt)
.build();
}
Response response = chain.proceed(request);
String jwt = response.header("jwt");
if (jwt != null) {
this.jwt = jwt;
}
return chain.proceed(request);
}
}
где 'responseBody.close()' вызывается в вашем примере? –
Я могу только сказать, что 'response.close()' никогда не вызывается ** – Antoniossss
^^^ try-with-resources –