Как настроить HttpClient для базовой аутентификации? - PullRequest
3 голосов
/ 16 ноября 2010

Я нашел эту последовательность для настройки базовой аутентификации здесь :

HttpClient client = new HttpClient();

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

Как этого добиться с помощью конфигурации пружины?Причина в том, что мне нужно включить аутентификацию для Spring-интеграции HttpOutboundGateway.Единственная часть информации, которую я нашел по этой теме: this

  • Вопрос: как выполнить конфигурацию пружины?
  • И второе, как я могувнедрить HttpClient в пружинную интеграцию?

Ответы [ 2 ]

5 голосов
/ 16 ноября 2010

Ну, это может быть что-то вроде этого: (заметьте, ничего не проверено - это просто серия случайных мыслей :))

<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 голос
/ 16 ноября 2010

Создайте собственный класс FactoryBean, который возвращает экземпляры HttpClient с нужной вам конфигурацией.

...