http:outbound-跟随重定向的网关
http:outbound-gateway to follow redirect
我需要在我的 Spring 集成应用程序中通过 HTTP 请求请求 JWT 令牌。
我配置了普通的 http 出站网关,但服务器回复了 301 永久移动;
它要求客户端遵循重定向(显然它是这样工作的,用 SOAP-UI 进行一些测试);
如何让 http-outbound-gateway 跟随重定向?
尝试了我能找到的所有方法,但到目前为止没有任何效果。
谢谢!
您需要考虑使用 HttpComponentsClientHttpRequestFactory
配置 HTTP 出站网关。这个基于 Apache HTTP 客户端 4.x,它的默认行为是 DefaultRedirectStrategy
,它在 GET
和 HEAD
方法上进行重定向,当 302
时,返回呼叫的 301
或 307
状态。
如果您需要重定向 POST
,请考虑使用 LaxRedirectStrategy
.
配置底层 HttpClient
在此处查看更多信息:
更新
要为 HttpComponentsClientHttpRequestFactory
中使用的 HttpClient
配置 LaxRedirectStrategy
,您需要这样的东西:
<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 和注释配置。
我需要在我的 Spring 集成应用程序中通过 HTTP 请求请求 JWT 令牌。
我配置了普通的 http 出站网关,但服务器回复了 301 永久移动;
它要求客户端遵循重定向(显然它是这样工作的,用 SOAP-UI 进行一些测试);
如何让 http-outbound-gateway 跟随重定向?
尝试了我能找到的所有方法,但到目前为止没有任何效果。
谢谢!
您需要考虑使用 HttpComponentsClientHttpRequestFactory
配置 HTTP 出站网关。这个基于 Apache HTTP 客户端 4.x,它的默认行为是 DefaultRedirectStrategy
,它在 GET
和 HEAD
方法上进行重定向,当 302
时,返回呼叫的 301
或 307
状态。
如果您需要重定向 POST
,请考虑使用 LaxRedirectStrategy
.
HttpClient
在此处查看更多信息:
更新
要为 HttpComponentsClientHttpRequestFactory
中使用的 HttpClient
配置 LaxRedirectStrategy
,您需要这样的东西:
<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 和注释配置。