Я хочу создать WebClient из HttpComponent org.apache.http.client.HttpClient, чтобы использовать его в асинхронных операциях. Любая идея о том, как это сделать
Пожалуйста, предоставьте более подробную информацию
Привет, Томас Привет, Сергей, у меня в основном есть объект http-клиента, и мне нужно создать объект веб-клиента для выполнения асинхронных вызовов, поскольку это то, что поддерживается только для реактивного программирования. Невозможно найти способ сделать это
В настоящее время Spring поддерживает клиентов Jetty и Netty. См. Как использовать клиент Jetty. В принципе, подойдет любая реализация ClientHttpConnector. В настоящее время реализация httpcomponent недоступна - она может быть добавлена в будущем.
Работа по использованию HttpClient Java 11 продолжается. См. Интеграция JDK 11 HttpClient с WebClient.




С org.apache.http.client.HttpClient это сложно, потому что он не был разработан для этого, вы могли бы это сделать, но это было бы тихое беспорядочное решение с большим количеством кодирования самостоятельно. Лучше использовать что-нибудь, например HttpAsyncClient (также из apache, кстати).
Здесь вы найдете некоторую информацию и пример кода: https://hc.apache.org/httpcomponents-asyncclient-ga/quickstart.html
Удачи
Не могли бы вы поделиться тем, что может быть грязным решением, если у нас нет возможности использовать HttpAsyncClient, поскольку у нас есть только объект HTTPClient, тогда как нам нужно использовать WebClient на основе Spring Webflux для выполнения вызовов отдыха.
С выпуском Spring Framework 5.3 и Весенний ботинок 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>
Я хотел бы упомянуть, что вам нужно добавить некоторые зависимости Maven, чтобы включить это: httpclient5, httpcore5-parent, httpcore5-reactive
Я даже понятия не имею, чего именно вы пытаетесь достичь. Что ты делал до сих пор? Где возникли проблемы?