Я новичок в 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.Я так долго ищу решение.Нашел похожие, возможно, даже такие же вопросы здесь, но ни один из ответов не решил мою проблему.Может быть, я не могу найти правильный ответ.Заранее спасибо.