2016-09-14 2 views
0

Я пытаюсь написать SOAP pull. Я затрудняюсь форматировать сообщение правильно.Добавление нескольких URI в SOAP Envelope с использованием Java

Я только с помощью прилагаемого javax.xml.soap. * Библиотека с Exclipse

мне нужен конверт, чтобы иметь несколько URI, в нем. Это пример использования SOAPUI.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh" xmlns:user="http://www.website.com/ems/soap/sh/userdata" xmlns:ser="http://www.website.com/ems/soap/sh/servicedata"> 

Однако после просмотра нескольких учебников я только в состоянии производить

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh"> 

Я не смог найти какую-либо документацию о том, как достичь требуемой мощности. Я до сих пор новичок в SOAP и Java, поэтому я не уверен, как четко формулировать то, что мне нужно.

Вот код, который я до сих пор минус дочерний элемент часть

MessageFactory messageFactory = MessageFactory.newInstance(); 
    SOAPMessage soapMessage = messageFactory.createMessage(); 
    SOAPPart soapPart = soapMessage.getSOAPPart(); 

    soapMessage.getSOAPPart().getEnvelope().setPrefix("soapenv"); 
    soapMessage.getSOAPPart().getEnvelope().removeNamespaceDeclaration("SOAP-ENV"); 
    soapMessage.getSOAPBody().setPrefix("soapenv"); 
    soapMessage.getSOAPHeader().setPrefix("soapenv"); 

    String serverURI = "http://www.website.com/ems/soap/sh"; 

    // SOAP Envelope 
    SOAPEnvelope envelope = soapPart.getEnvelope(); 
    envelope.addNamespaceDeclaration("sh", serverURI); 

ответ

0

Если вы хотите, чтобы получить это мыльный конверт,

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sh="http://www.website.com/ems/soap/sh" xmlns:user="http://www.website.com/ems/soap/sh/userdata" xmlns:ser="http://www.website.com/ems/soap/sh/servicedata"> 

Просто добавьте addNamespaceDeclaration после кода, как это.

SOAPEnvelope envelope = soapPart.getEnvelope(); 
envelope.addNamespaceDeclaration("sh", serverURI); 

//added code here 
envelope.addNamespaceDeclaration("user", "http://www.website.com/ems/soap/sh/userdata"); 
envelope.addNamespaceDeclaration("ser", "http://www.website.com/ems/soap/sh/servicedata"); 
+0

Огромное спасибо. Это именно то, что я искал. Я проголосовал за ваш ответ. – DPersson

Смежные вопросы