Я пытаюсь сделать запрос службы SOAP с использованием Spring WebServiceTemplate, однако всегда получаю ошибку.Отправка запроса SOAP с предварительным предварительным аутентификацией
Хотя тот же запрос дает успешный ответ, когда я использую интерфейс SOAP. Единственное, что я делаю по-разному в интерфейсе SOAP, я выбираю радиокнопку «Authenticate Pre-emptively».
Ниже приведены мои фрагменты кода для WebServiceTemplate и клиента.
@Bean(name = "xxxxxWSTemplate")
public WebServiceTemplate xxxxxWSTemplate() throws Exception {
final WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri(env.getProperty("integration.webservice.url"));
final Jaxb2Marshaller marshaller = new org.springframework.oxm.jaxb.Jaxb2Marshaller();
marshaller.setContextPath(ObjectFactory.class.getPackage().getName());
webServiceTemplate.setMarshaller(marshaller);
webServiceTemplate.setUnmarshaller(marshaller);
String userName = env.getProperty("integration.service.xxx.username");
String password = env.getProperty("integration.service.xxx.password");
Wss4jSecurityInterceptor wss4jSecurityInterceptor = new Wss4jSecurityInterceptor();
wss4jSecurityInterceptor.setSecurementUsername(userName);
wss4jSecurityInterceptor.setSecurementPassword(password);
wss4jSecurityInterceptor.setSecurementMustUnderstand(true);
wss4jSecurityInterceptor.setSecurementActions("UsernameToken");
wss4jSecurityInterceptor.setSecurementPasswordType("PasswordText");
wss4jSecurityInterceptor.afterPropertiesSet();
webServiceTemplate.setInterceptors(new ClientInterceptor[] {wss4jSecurityInterceptor});
return webServiceTemplate;
}
Я всегда получаю "500-Internal Server Error" из моего кода, однако же выполняется запрос от SOAP-интерфейса.
сообщение stracktrce. Также вы не вызываете 'afterPropertiesSet' на' Jaxb2Marshaller'. Я бы предложил сделать «Jaxb2Marshaller» и перехватчик также весенними управляемыми бобами, поэтому вам не нужно беспокоиться о обратных вызовах жизненного цикла. –