Как создать Spring WebClient из Apache Http Client

Я хочу создать WebClient из HttpComponent org.apache.http.client.HttpClient, чтобы использовать его в асинхронных операциях. Любая идея о том, как это сделать

Я даже понятия не имею, чего именно вы пытаетесь достичь. Что ты делал до сих пор? Где возникли проблемы?

Thomas 09.08.2018 13:25

Пожалуйста, предоставьте более подробную информацию

Sergey Prosin 09.08.2018 13:55

Привет, Томас Привет, Сергей, у меня в основном есть объект http-клиента, и мне нужно создать объект веб-клиента для выполнения асинхронных вызовов, поскольку это то, что поддерживается только для реактивного программирования. Невозможно найти способ сделать это

user3847425 09.08.2018 16:34

В настоящее время Spring поддерживает клиентов Jetty и Netty. См. Как использовать клиент Jetty. В принципе, подойдет любая реализация ClientHttpConnector. В настоящее время реализация httpcomponent недоступна - она ​​может быть добавлена ​​в будущем.

Ritesh 14.12.2019 15:41

Работа по использованию HttpClient Java 11 продолжается. См. Интеграция JDK 11 HttpClient с WebClient.

Ritesh 14.12.2019 15:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
2 230
2

Ответы 2

С org.apache.http.client.HttpClient это сложно, потому что он не был разработан для этого, вы могли бы это сделать, но это было бы тихое беспорядочное решение с большим количеством кодирования самостоятельно. Лучше использовать что-нибудь, например HttpAsyncClient (также из apache, кстати).

Здесь вы найдете некоторую информацию и пример кода: https://hc.apache.org/httpcomponents-asyncclient-ga/quickstart.html

Удачи

Не могли бы вы поделиться тем, что может быть грязным решением, если у нас нет возможности использовать HttpAsyncClient, поскольку у нас есть только объект HTTPClient, тогда как нам нужно использовать WebClient на основе Spring Webflux для выполнения вызовов отдыха.

user3847425 09.08.2018 16:33

С выпуском 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

kolyaiks 16.05.2021 00:36

Другие вопросы по теме