Я хочу создать WebClient из HttpComponent's org.apache.http.client.HttpClient, чтобы использовать его в асинхронных операциях. Любая идея о том, как это сделать
Как создать Spring WebClient из Apache Http Client
comment
Я даже понятия не имею, чего именно вы пытаетесь достичь. Что вы сделали до сих пор? Где столкнулись с проблемами?
- person Thomas   schedule 09.08.2018
comment
Пожалуйста, предоставьте более подробную информацию
- person Sergey Prosin   schedule 09.08.2018
comment
Привет, Томас Привет, Сергей, у меня в основном есть объект http-клиента, и мне нужно создать объект веб-клиента для выполнения асинхронных вызовов, поскольку это то, что поддерживается только для реактивного программирования. Не удалось найти способ сделать это
- person user3847425   schedule 09.08.2018
comment
В настоящее время Spring поддерживает клиентов Jetty и Netty. См. Как использовать клиент Jetty. По сути, любая реализация ClientHttpConnector будет работать. В настоящее время реализация httpcomponent недоступна — она может быть добавлена в будущем.
- person Ritesh   schedule 14.12.2019
comment
Работайте над использованием HttpClient Java 11 выполняется. См. интеграцию JDK 11 HttpClient с WebClient.
- person Ritesh   schedule 14.12.2019
Ответы (2)
С выпуском Spring Framework 5.3 и Spring Boot 2.4 появилась встроенная интеграция между Apache HttpClient 5.0 и Spring WebClient.
HttpAsyncClientBuilder clientBuilder = HttpAsyncClients.custom();
clientBuilder.setDefaultRequestConfig(...);
CloseableHttpAsyncClient client = clientBuilder.build();
ClientHttpConnector connector = new HttpComponentsClientHttpConnector(client);
WebClient webClient = WebClient.builder().clientConnector(connector).build();
ОБНОВЛЕНИЕ (на основе комментария @kolyaiks)
Необходимые зависимости:
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5-reactive</artifactId>
<version>5.1</version>
</dependency>
person
Martin Tarjányi
schedule
20.09.2020
Я хотел бы упомянуть, что вам нужно добавить некоторые зависимости Maven, чтобы включить это:
httpclient5
, httpcore5-parent
, httpcore5-reactive
- person kolyaiks; 16.05.2021
С org.apache.http.client.HttpClient это сложно, потому что он не был разработан для этого, вы могли бы это сделать, но это было бы тихим отрывочным решением с большим количеством кода самостоятельно. Лучше используйте что-то, предназначенное для HttpAsyncClient (тоже от apache, кстати).
Здесь вы найдете некоторую информацию и пример кода: https://hc.apache.org/httpcomponents-asyncclient-ga/quickstart.html
Удачи
person
LeBraveLittleToaster
schedule
09.08.2018
Не могли бы вы поделиться тем, что может быть грязным решением, если у нас нет возможности использовать HttpAsyncClient, поскольку у нас есть только доступный объект HTTPClient, тогда как нам нужно использовать WebClient на основе Spring Webflux для выполнения остальных вызовов.
- person user3847425; 09.08.2018