小编Hir*_*oto的帖子

java 11 上的 SSL 通信期间发生 SocketException 时,如何使用 DefaultHttpRequestRetryHandler(HTTPClient) 重试?

我应该如何实现它才能在 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 包装的。

我阅读了以下内容。

java httpclient apache-httpcomponents java-11

4
推荐指数
1
解决办法
2618
查看次数

标签 统计

apache-httpcomponents ×1

httpclient ×1

java ×1

java-11 ×1