gpt4 book ai didi

java - 发送 SOAP 消息

转载 作者:行者123 更新时间:2023-12-02 07:59:01 29 4
gpt4 key购买 nike

我正在尝试发送 SOAP 消息。

我使用以下代码手动向消息添加 header :

    public static void main(String[] args) {
try{
AmdocsServicesServiceagentLocator locator = new AmdocsServicesServiceagentLocator();
PortTypeEndpoint1BindingStub port = new PortTypeEndpoint1BindingStub(new URL("http://srvp7rd-tibco.rnd.local:8025/Process/SoapRequests/Amdocs-Services.serviceagent/PortTypeEndpoint1"),locator);
GetContactRelatedInfo parameters = new GetContactRelatedInfo();
GetContactRelatedInfoRequest request = new GetContactRelatedInfoRequest();
request.setPersonID("6610782925");
request.setPersonIDType("ID number (CPR)");

/* Creating an empty XML Document - We need a document*/

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();

/* Creating the XML tree */

/* Create the root element and add it to the document */
Element root = doc.createElement("mul:MultiTenant");
doc.appendChild(root);

/* Adding the child to the root */
Element child = doc.createElement("mul:OpCo");
root.appendChild(child);

/* Add text element to the child */
Text text = doc.createTextNode("DENMARK");
child.appendChild(text);

/* Adding the child to the root */
child = doc.createElement("mul:BS");
root.appendChild(child);

/* Add text element to the child */
text = doc.createTextNode("ENV3");
child.appendChild(text);

SOAPHeaderElement element = new SOAPHeaderElement("" ,"soapenv:Header" , doc);
element.setActor(null);
port.setHeader(element);
System.out.println(port.getHeaders()[0]);
port.getContactRelatedInfoOperation(parameters);
} catch (Exception e){
e.printStackTrace();
}
}

但我不知道为什么,也不知道为什么我会收到一条包含我不想要的属性的消息。例如当前代码的输出消息为:

<soapenv:Header soapenv:mustUnderstand="0" xsi:type="ns1:Document"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns1="http://xml.apache.org/xml-soap">
<mul:MultiTenant xmlns:mul="">
<mul:OpCo xmlns:mul="">DENMARK</mul:OpCo>
<mul:BS xmlns:mul="">ENV3</mul:BS>
</mul:MultiTenant></soapenv:Header>

例如,mul:OpCo 标记中的 xmlns:mul="" 属性。有没有办法删除该属性?

最佳答案

这些不是属性,而是命名空间声明。您正在使用 mul: 命名空间前缀创建元素,并且必须在某处定义该前缀。 Java 添加了一个默认的空声明 (xmlns:mul=""),以便您的 XML 最终格式良好 - 您不能在未声明的情况下使用前缀。

如果您不需要这些声明,请删除 mul: 前缀,或在文档中的其他位置正确定义它。不过,您还没有告诉我们您的文档应该是什么样子,因此很难建议您如何做到这一点。

关于java - 发送 SOAP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195515/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com