создать SOAP-сообщение в Java - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в SOAP и не совсем понимаю это.Это первый раз, когда я должен работать с мылом.Итак, я пытаюсь отправить этот запрос:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
    <tns:BatchUpload xmlns:tns="http://someurl.com/">
        <tns:data>
            <Batch xmlns="http://someurl.com/someAction">
                <Header>
                    <Identifier>55555</Identifier>
                    <Subscriber>Name</Subscriber>
                    <SubscriberUnit>Unit</SubscriberUnit>
                </Header>
                <Commands>
                    <Sequence>
                        <Command identifier="1">
                            <Indi>
                                <NID>223</NID>
                            </Indi>
                        </Command>
                    </Sequence>
                </Commands>
            </Batch>
        </tns:data>
    </tns:BatchUpload>
</SOAP-ENV:Body>

мой код:

       SOAPPart soapPart = soapMessage.getSOAPPart();

    String myNamespace = "tns";
    String myNamespaceURI = "http://someurl.com/";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI);

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement soapBodyBatchUpload = soapBody.addChildElement("BatchUpload", myNamespace);
    soapBodyBatchUpload.addNamespaceDeclaration(myNamespace, myNamespaceURI);
    SOAPElement soapBodyData = soapBody.addChildElement("data", myNamespace);
    SOAPElement soapBodyBatch = soapBody.addChildElement("Batch", "", "http://someurl.com/someAction");
    SOAPElement soapBodyCommands = soapBody.addChildElement("Commands");
    SOAPElement soapBodyHeader = soapBodyBatch.addChildElement("Header");
    SOAPElement soapBodyHeaderIdentifier = soapBodyBatch.addChildElement("Identifier");
    SOAPElement soapBodyHeaderSubscriber = soapBodyBatch.addChildElement("Subscriber");
    SOAPElement soapBodyHeaderSubscriberUnit = soapBodyBatch.addChildElement("SubscriberUnit");
    SOAPElement soapBodySequence = soapBody.addChildElement("Sequence");
    SOAPElement soapBodyCommand = soapBody.addChildElement("Command");
    soapBodyCommand.addAttribute(QName.valueOf("Identifier"), "1");
    SOAPElement soapBodyIndi = soapBody.addChildElement("Indi");
    SOAPElement soapBodyNId = soapBody.addChildElement("NId");

    soapBodyNId.addTextNode("223");

    soapBodyHeader.addChildElement(soapBodyHeaderIdentifier);
    soapBodyHeader.addChildElement(soapBodyHeaderSubscriber);
    soapBodyHeader.addChildElement(soapBodyHeaderSubscriberUnit);
    soapBodyHeaderIdentifier.addTextNode("55555");
    soapBodyHeaderSubscriber.addTextNode("Name");
    soapBodyHeaderSubscriberUnit.addTextNode("Unit");
    soapBodyIndi.addChildElement(soapBodyNId);
    soapBodyCommand.addChildElement(soapBodyIndi);
    soapBodySequence.addChildElement(soapBodyCommand);
    soapBodyCommands.addChildElement(soapBodySequence);
    soapBodyBatch.addChildElement(soapBodyCommands);
    soapBodyData.addChildElement(soapBodyBatch);
    soapBodyBatchUpload.addChildElement(soapBodyData);

затем я добавляю заголовки:

    MimeHeaders headers = soapMessage.getMimeHeaders();
    headers.addHeader("SOAPAction", soapAction);
    headers.addHeader("Identifier", "55555");
    headers.addHeader("Subscriber", "Name");
    headers.addHeader("SubscriberUnit", "Unit");

но это не возвращает того, что я хочу.Я думаю, что элемент Commands наследует пустой xmlns = "" от Batch.Я так долго ищу решение.Нашел похожие, возможно, даже такие же вопросы здесь, но ни один из ответов не решил мою проблему.Может быть, я не могу найти правильный ответ.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...