我应该如何实现它才能在 java11 上使用httpclient重试 SSL 通信?
如下所示覆盖 DefaultHttpRequestRetryHandler 是否更好?
有没有更好的办法?
public class HttpRequestRetryHandler extends DefaultHttpRequestRetryHandler {
@Override
public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
IOException cause = exception;
if (exception instanceof SSLException) {
if (exception.getCause() != null && exception.getCause() instanceof IOException) {
cause = (IOException) exception.getCause();
}
}
return super.retryRequest(cause, executionCount, context);
}
}
Run Code Online (Sandbox Code Playgroud)
在 Java 11 中,不会重试 SocketException,因为 SocketException 是用 SSLException 包装的。
我阅读了以下内容。
http://hg.openjdk.java.net/jdk-updates/jdk11u/rev/18b4acfaaa97
if ((cause != null) && (cause instanceof IOException)) {
ssle = …Run Code Online (Sandbox Code Playgroud)