Spring Boot Server无法识别HTTP Header SOAPAction的值
问题描述:
我试图使用此web-service但我得到SoapExeption
。Spring Boot Server无法识别HTTP Header SOAPAction的值
以下是我发送请求的方法。我怎样才能解决这个问题在春季启动?
public class CalcClient extends WebServiceGatewaySupport {
private static final Logger LOGGER = LoggerFactory.getLogger(CalcClient.class);
private ObjectFactory objectFactory;
@Autowired
public void setObjectFactory(ObjectFactory objectFactory) {
this.objectFactory = objectFactory;
}
public JAXBElement<AddResponse> sendAndReceive() {
Add request = objectFactory.createAdd();
request.setIntA(12);
request.setIntB(12);
LOGGER.info("Sending request");
JAXBElement<AddResponse> response = (JAXBElement<AddResponse>) getWebServiceTemplate().marshalSendAndReceive("http://www.dneonline.com/calculator.asmx", request);
return response;
}
}
答
我有同样的问题访问该服务,你会得到一个错误试图绑定AddResponse
到JAXBElement
。您需要在您的代码中设置您的soapAction
,如下所示使用WebServiceMessageCallback
public AddResponse sendAndReceive() {
Add request = objectFactory.createAdd();
request.setIntA(12);
request.setIntB(12);
LOGGER.info("Sending request");
AddResponse response = (AddResponse) getWebServiceTemplate().marshalSendAndReceive("http://www.dneonline.com/calculator.asmx", request, new WebServiceMessageCallback() {
@Override
public void doWithMessage(WebServiceMessage webServiceMessage) throws IOException, TransformerException {
((SoapMessage)webServiceMessage).setSoapAction("http://tempuri.org/Add");
}
});
return response;
}