Ich versuche, einen SOAP-Webservice mit Spring-ws zu konsumieren. Ich kann diesen Webdienst erfolgreich über die SOAP-Benutzeroberfläche verwenden. Ich erhalte jedoch eine nicht autorisierte Ausnahme:Consuming SOAP WS gibt Fehler 401 nicht autorisiert
org.springframework.ws.client.WebServiceTransportException: Unauthorized [401]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:699)
Wie kann ich erfolgreich authentifizieren?
Mein Code ist wie folgt:
WebServiceTemplate Konfiguration:
@Bean
public WebServiceTemplate webServiceTemplate(Jaxb2Marshaller marshaller){
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri("http://ultron.illovo.net:9704/AdminService");
webServiceTemplate.setMarshaller(marshaller);
webServiceTemplate.setUnmarshaller(marshaller);
Credentials credentials = new UsernamePasswordCredentials("biqa", "welcome1");
HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender();
messageSender.setCredentials(credentials);
messageSender.setReadTimeout(5000);
messageSender.setConnectionTimeout(5000);
webServiceTemplate.setMessageSender(messageSender);
return webServiceTemplate;
}
Auftraggeber:
@Autowired
WebServiceTemplate webServiceTemplate;
public CallProcedureWithResultsResponse callProcedureWithResults(String procedureName){
CallProcedureWithResults request = new CallProcedureWithResults();
request.setProcedureName(procedureName);
log.info("Calling procedure " + procedureName);
CallProcedureWithResultsResponse response = (CallProcedureWithResultsResponse) webServiceTemplate.marshalSendAndReceive("http://ultron.illovo.net:9704/AdminService/AdminService", request);
return response;
}
JUnit-Test
@Test
public void testWebService(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ObieeConfiguration.class);
ObieeClient client = context.getBean(ObieeClient.class);
CallProcedureWithResultsResponse response = client.callProcedureWithResults("GetOBISVersion()");
client.printResponse(response);
context.close();
}
Haben Sie das jemals behoben? Wenn ja, was war Ihre Lösung? – mattalxndr