Мне нужно подключиться к внешнему веб-сервису.Я использую API SAAJ для создания XML-запроса на отправку.
API SAAJ сгенерировал некоторый код по умолчанию, от которого я не знаю, как избавиться.1-й пример - это XML, сгенерированный SAAJ API, а 2-й XML - рабочий, работающий
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<Login xmlns="*************">
<password>[string?]</password>
</Login>
</env:Body>
</env:Envelope>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<Login xmlns="*************">
<password>[string?]</password>
</Login>
</Body>
</Envelope>
. Как видите, мне нужно удалить env: stuff ....
Myкод:
// Creating a new empty SOAP message object
SOAPMessage reqMsg = MessageFactory.newInstance(
SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
// Populating SOAP body
String prefix = "";
String uri = "*********************";
SOAPEnvelope envelope = reqMsg.getSOAPPart().getEnvelope();
envelope.addNamespaceDeclaration("", "http://schemas.xmlsoap.org/soap/envelope/");
SOAPBody body = envelope.getBody();
SOAPBodyElement service = body.addBodyElement(
envelope.createName("Login", prefix, uri));
SOAPElement param = service.addChildElement(
envelope.createName("password", prefix, uri));
param.addTextNode(password);
SOAPHeader header = envelope.getHeader();
header.detachNode();
// Connecting and calling
printSOAPRequest(reqMsg);
doTrustToCertificates();
SOAPConnection con
= SOAPConnectionFactory.newInstance().createConnection();
SOAPMessage response = con.call(reqMsg, "*****************************");
con.close();
РЕДАКТИРОВАТЬ: мне сказали, что служба использует SOAP 1.2, но после попытки подключения с использованием SOAP 1.1 (основное отличие xmlns=" xmlns="http://schemas.xmlsoap.org/soap/envelope/">"
) работает нормально