2010-11-16 17 views
3

我發現這個順序設置基本身份驗證here如何配置HttpClient進行基本認證?

HttpClient client = new HttpClient(); 

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

這又如何使用Spring配置來achived? 背後的原因是,我需要爲彈簧集成的HttpOutboundGateway啓用身份驗證。 的信息,我對這個話題發現的唯一一塊是this

  • 的問題是:如何做彈簧的配置?
  • 第二我如何注入HttpClient到彈簧集成?
+0

HttpClient的3?爲什麼不升級到HttpClient 4? – 2010-11-16 14:29:23

+0

因爲2.x沒有發佈,所以我決定使用spring-integration 1.0.3。 – stacker 2010-11-16 15:14:52

回答

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; 
    } 
} 
+0

非常感謝草稿 – stacker 2010-11-16 16:25:17

1

創建一個FactoryBean您自己的類,它返回您喜歡的配置的HttpClient實例。

相關問題