http:outbound-gateway, чтобы следовать перенаправлению - PullRequest
0 голосов
/ 03 марта 2020

Мне нужно запросить токен JWT с помощью HTTP-запроса в моем приложении Spring Integration.

Я настроил простой исходящий http-проход, но сервер отвечает 301 Moved Permanently;

Требуется, чтобы клиент следовал за редиректом (и, очевидно, он работает таким образом, выполняя некоторые тесты с SOAP -UI);

Как я могу заставить http-outbound-gateway следовать перенаправлениям?

Перепробовал все, что смог найти, но пока ничего не получалось.

Спасибо!

1 Ответ

2 голосов
/ 03 марта 2020

Вам необходимо сконфигурировать ваш исходящий HTTP-шлюз с HttpComponentsClientHttpRequestFactory. Этот основан на HTTP-клиенте Apache 4.x, и его поведение по умолчанию - DefaultRedirectStrategy, которое выполняет перенаправление для методов GET и HEAD и когда статус 302, 301 или 307 возвращается для вызова.

Если вам нужно перенаправить POST, рассмотрите возможность настройки базового HttpClient с LaxRedirectStrategy.

См. дополнительную информацию здесь: Обработка HttpClient Redirects

ОБНОВЛЕНИЕ

Чтобы настроить LaxRedirectStrategy для HttpClient, используемого в HttpComponentsClientHttpRequestFactory, вам нужно что-то вроде этого:

<beans:bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClients" factory-method="custom">
    <beans:property name="redirectStrategy" value="#{new org.apache.http.impl.client.LaxRedirectStrategy()}"/>
</beans:bean>

<beans:bean id="clientHttpRequestFactory"
      class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
    <beans:constructor-arg>
        <beans:bean factory-bean="httpClientBuilder" factory-method="build"/>
    </beans:constructor-arg>
</beans:bean>

Это все равно что делать все эти вещи в XML, поэтому подумайте о переводе вашего проекта в Java и настройку аннотаций.

...