2014-01-24 2 views

ответ

3

Да, можно настроить Jersey Client на подключение через прокси-сервер, для которого требуется аутентификация NTLM.

Вот упрощенный фрагмент кода, который готовит соответствующий ClientConfig, который должен работать с Джерси v2.5 +:

final ClientConfig config = new ClientConfig(); 

config.property(ClientProperties.PROXY_URI, "http://myproxy.com:8000"); 

CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); 

final AuthScope ntlmAuthScope = 
     new AuthScope("myproxy.com", 8000, AuthScope.ANY_REALM, "NTLM"); 

credentialsProvider.setCredentials(
     ntlmAuthScope, 
     new NTCredentials("user", "password", "hostname", "domain")); 

config.property(
     ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider); 

config.connectorProvider(new ApacheConnectorProvider()); 

Client client = ClientBuilder.newClient(config); 

Обратите внимание: я использую HttpClient разъем Apache с Клиентом Джерси - вам может потребоваться несколько другой код, если вы используете another client transport connector.

Вы также можете добавить следующую строку в ваш код, если вы хотите, чтобы ваши запросы POST/PUT быть помещены в буфер (и, следовательно, повторяемые) в ответ на любые 407 задач аутентификации, которые возвращаются из вашего прокси-сервера:

config.property(ClientProperties.REQUEST_ENTITY_PROCESSING, 
       RequestEntityProcessing.BUFFERED); 
+0

Я попробовал предложенное решение, но если я пост вида:.. client.target (...) запрос() пост (...) нет заголовка «Authorization» не привязывается к моему запрос. Я делаю что-то неправильно? – finrod

 Смежные вопросы

  • Нет связанных вопросов^_^