SOAPMessage добавление элемента тела, где префикс не является пространством имен

#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 в качестве префикса?