Spring WebServiceTemplate с HttpComponentsMessageSender и UsernamePasswordCredentials не отправляет имя пользователя и пароль в первый раз - PullRequest
0 голосов
/ 15 октября 2018

Я использую 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.Код библиотеки выглядит довольно сложным.

...