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,它在 GETHEAD 方法上进行重定向,当 302 时,返回呼叫的 301307 状态。

如果您需要重定向 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 和注释配置。