使用Java

时间:2016-09-14 00:34:10

标签: java soap

我正在尝试写一个SOAP拉。我遇到了正确格式化邮件的困难。

我只使用包含在Exclipse中的javax.xml.soap。*库

我需要信封中包含多个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 );

1 个答案:

答案 0 :(得分: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" );