如何配置 HttpClient 进行基本身份验证?

3

我在这里找到了一个设置基本身份验证的步骤(链接)

HttpClient client = new HttpClient();

client.getState().setCredentials(
   new AuthScope("www.domain.com", 443, "realm"),
   new UsernamePasswordCredentials("username", "password") );

如何使用Spring配置实现这一目标?原因是我需要为Spring Integration HttpOutboundGateway启用身份验证。我在这个主题上找到的唯一信息是这个

  • 问题是:如何实现Spring配置?
  • 第二个问题是如何将HttpClient注入Spring Integration中?

HttpClient 3?为什么不升级到HttpClient 4呢? - Buhake Sindi
我决定使用spring-integration 1.0.3,因为2.x版本尚未发布。 - stacker
2个回答

5

好的,这可能类似于以下内容:(注意,没有经过测试 - 这只是一系列随机想法 :))

<bean id="httpOutbound" class="org.springframework.integration.http.HttpOutboundEndpoint" >
    <property name="requestExecutor" ref="executor" />
</bean>

<bean id="executor" class="org.springframework.integration.http.CommonsHttpRequestExecutor">
    <property name="httpClient">
        <bean factory-bean="clientFactory" factory-method="getHttpClient">
    </property>
</bean>

<bean id="clientFactory" class="bla.bla.bla.HttpClientFactoryBean">
    <constructor-arg ref="httpClient" />
    <constructor-arg ref="credentials" />
</bean>

<bean id="httpClient" class="org.apache.commons.httpclient.HttpClient">
    <constructor-arg ref="httpClientParams" />
</bean>

<bean id="httpClientParams" class="org.apache.commons.httpclient.params.HttpClientParams">
    <property name="authenticationPreemptive" value="true" />
    <property name="connectionManagerClass" value="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager" />
</bean>

<bean id="credentials" class="org.apache.commons.httpclient.UsernamePasswordCredentials">
    <constructor-arg value="user" />
    <constructor-arg value="password" />
</bean>


public class HttpClientFactoryBean{
    private HttpClient httpClient;
    public HttpClientFactoryBean(HttpClient httpClient, Credentials credentials){
        this.httpClient = httpClient;
        httpClient.getState().setCredentials(AuthScope.ANY, credentials);
    }

    public HttpClient getHttpClient(){
        return httpClient;
    }
}

1
创建一个自己的FactoryBean类,该类返回具有所需配置的HttpClient实例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接