#java #soap
#java #soap
Вопрос:
Меня попросили сгенерировать некоторые запросы пользовательского интерфейса SOAP с использованием Java. У меня нет никаких знаний о soap, поэтому я пытаюсь разобраться в этом самостоятельно, поэтому, пожалуйста, простите меня, если это глупый вопрос.
Это фрагмент запроса, который я пытаюсь создать на Java:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://BT/IStore/WebServices/">
<soapenv:Header/>
<soapenv:Body>
<web:ProductSearch>
<!--Optional:-->
<web:RequestData>
<web:ChannelID>4</web:ChannelID>
<!--Optional:-->
<web:CountryID>GB</web:CountryID>
<web:HD>true</web:HD>
<web:COLLECTION>true</web:COLLECTION>
<!--Optional:-->
<web:ProductID></web:ProductID>
<web:ProductSKUs></web:ProductSKUs>
Используя примеры, которые я нашел в Интернете, мне удалось создать сообщение soap, подобное этому:
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
String serverURI = "http://BT/IStore/WebServices/";
// SOAP Envelope
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("soapenv", serverURI);
// SOAP Body
SOAPBody soapBody = envelope.getBody();
SOAPElement soapBodyElem = soapBody.addChildElement("VerifyEmail", "soapenv");
SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("email", "soapenv");
soapBodyElem1.addTextNode("mutantninja@gmail.com");
SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("LicenseKey", "soapenv");
soapBodyElem2.addTextNode("123");
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", serverURI "VerifyEmail");
soapMessage.saveChanges();
Сообщение, которое он выводит, хотя usig пространство имен «soapenv» на узлах:
<?xml version="1.0"?>
-<SOAP-ENV:Envelope xmlns:soapenv="http://BT/IStore/WebServices/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
-<SOAP-ENV:Body>
-<soapenv:VerifyEmail>
<soapenv:email>mutantninja@gmail.com</soapenv:email>
<soapenv:LicenseKey>123</soapenv:LicenseKey>
</soapenv:VerifyEmail>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Если я изменяю префикс в любом из элементов, я получаю сообщение об ошибке «Невозможно найти пространство имен для префикса web», может кто-нибудь, пожалуйста, помогите мне, как я могу добавить новый узел с web в качестве префикса?