Я использую spring WebServiceTemplate
(WebServiceGatewaySupport.getWebServiceTemplate()
) для вызова веб-службы Soap на сервере https.Существует логин и пароль аутентификации.Поэтому я создаю экземпляр HttpComponentsMessageSender
и заполняю его UsernamePasswordCredentials
.Других дополнительных настроек нет, все по умолчанию.
Когда я звоню WebServiceTemplate.marshalSendAndReceive
, я получаю правильный результат, поэтому он работает.
Но когда я вижу журнал приложения, янайдет там два https-вызова (внутри одного вызова marshalSendAndReceive).Первый - без имени пользователя и пароля, и результат «HTTP / 1.1 401 Unauthorized».Framework восстанавливается после этой ошибки и отправляет второй запрос с именем пользователя и паролем, и результат равен 200.
Таким образом, мое приложение ведет себя почти хорошо, оно просто отправляет дополнительный бесполезный неверный запрос https.
ЕстьЕсть ли способ заставить Spring включить имя пользователя и пароль в первый (и единственный) вызов?Некоторая конфигурация WebServiceTemplate
или HttpComponentsMessageSender
или что-то еще?
Обновление: поведение вызвано DefaultRequestDirector.execute
в цикле while (! Done) внутри библиотеки apache-httpclient.Код библиотеки выглядит довольно сложным.