我正在尝试编写SOAP Web服务客户端,并在SpringBoot中调用SOAP WS客户端时出现org.springframework.ws.client.WebServiceTransportException: Internal Server Error [500]
错误。
请找到下面的SOAP WS Client:
@Service
public class SOAPConnector extends WebServiceGatewaySupport {
@Value("${soap.mw.url}")
String soapMwUrl;
@Value("${soap.mw.username}")
private String username;
@Value("${soap.mw.password}")
private String password;
private static final String SCHEMA_PREFIX = "oas";
public Object callWebService(Object request) {
getWebServiceTemplate().setCheckConnectionForFault(false);
return getWebServiceTemplate().marshalSendAndReceive(soapMwUrl, request, new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
try {
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
SOAPHeader soapHeader = soapEnvelope.getHeader();
SOAPHeaderElement securityHeader = soapHeader
.addHeaderElement(new QName(Constants.SECURITY_NS, "Security", SCHEMA_PREFIX));
SOAPElement usernameToken = securityHeader.addChildElement("UsernameToken", SCHEMA_PREFIX);
SOAPElement usernameElement = usernameToken.addChildElement("Username", SCHEMA_PREFIX);
SOAPElement passwordElement = usernameToken.addChildElement("Password", SCHEMA_PREFIX);
usernameElement.setTextContent(username);
passwordElement.setTextContent(password);
securityHeader.setMustUnderstand(true);
} catch (Exception e) {
throw new IOException("Error while adding authentication.");
}
}
});
}
}
org.springframework.ws.client.WebServiceTransportException: Internal Server Error [500]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:699)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:609)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:390)
......SOAPConnector.callWebService(SOAPConnector.java:41)
任何人都可以帮忙吗?