HttpClient5 — множество API изменено/удалено

Я переношу свое приложение на использование HttpClient5, но с каждым днем ​​оно становится несчастным. Многие API-интерфейсы удалены, и нет надлежащей документации, позволяющей узнать альтернативы. Stackoverflow/любой другой веб-сайт/блоги всегда показывает ответы, связанные с httpcomponents4.x, но эти API больше не существуют в HttpClient5. Я размещаю здесь все свои запросы/альтернативы. Если кто-нибудь знает, пожалуйста, ответьте/подтвердите, если это правильные реализации.

  1. Установка времени ожидания сокета на клиенте: удален RequestConfig.custom().setSocketTimeout(socketTimeout).build() API. После долгих исследований обнаружил, что существует отдельный класс SocketConfig, который необходимо установить на ConnectionManager

     SocketConfig socketConfig=SocketConfig.custom()
                                     .setSoTimeout(Timeout.ofMilliseconds(10000))
                                     .build();
    
     BasicHttpClientConnectionManager connMgr=new BasicHttpClientConnectionManager(registry);
     connMgr.setSocketConfig(socketConfig);
    
     CloseableHttpClient httpclient = HttpClients.custom()
             .setConnectionManager(connMgr)
             .build();
    
  2. Установка хоста по умолчанию. Далее следует Как установить цель HttpHost по умолчанию в Apache HttpClient 4.3+? и обнаружили, что мы можем переопределить determineRoute в DefaultRoutePlanner, но мы не можем сделать это в httpclient5, так как этот метод объявлен как final, поэтому не может переопределить. Итак, я сделал это:

         HttpHost targetHost = new HttpHost(myHost,myPort);
         HttpRoutePlanner planner=new HttpRoutePlanner() {
    
             @Override
             public HttpRoute determineRoute(HttpHost var1, HttpContext var2) throws HttpException {
                 HttpRoute route=new HttpRoute(targetHost);//default for all requests
                 return route;
             }
         };
            CloseableHttpClient client=HttpClients.custom()
                 .setConnectionManager(mgr)
                 .setRoutePlanner(planner)
                 .build();
    
  3. HttpRequestBase заменено на HttpUriRequestBase — в HttpRequestBase мы вызывали getRequestLine(), чтобы узнать подробности запроса, который печатается, как показано ниже:

POST https://url HTTPS/1.1

Но getRequestLine() API удален в HttpUriRequestBase, поэтому я использую так:

httpReq.getMethod()+" "+httpReq.getUri() но протокол не печатается, даже если я использую httpReq.getVersion()

  1. Нет отдельных библиотек httpasyncclient httpcore-nio для HttpClient5. После исследования выяснилось, что все объединено в httpclient5 и httpcore5. Теперь здесь начинаются дополнительные трудности. Все классы ниже больше не существуют.
SSLIOSessionStrategy 
NoopIOSessionStrategy
PoolingNHttpClientConnectionManager
DefaultConnectingIOReactor
ConnectingIOReactor
IOReactorException

Пока не знаю альтернатив для этого. IOReactorConfig API не ясны. В демонстрационных примерах IOReactorConfig было установлено на CloseableHttpAsyncClient без примеров SSLcontext. В моем случае, согласно существующему коду, они используют IOReactorConfig и SSLContext. Теперь не уверен, как клуб этих.

Подскажите, правильно ли я делаю или нет.

Там много других. Будет обновляться.