你好。
我有一个示例 SOAP 请求
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP:Body>
<GetParameter xmlns="http://examples/2001">
<request>
<MonCode xmlns="http://newsite/mon">Latency</MonCode>
<TimeFrom xmlns="http://newsite/mon">2016-10-26T11:00</TimeFrom>
<TimeTo xmlns="http://newsite/mon">2016-10-26T12:00</TimeTo>
</request>
</GetParameter>
</SOAP:Body>
</SOAP:Envelope>
使用 SAAJ API 在 JAVA 中形成 SOAP 请求
以下代码
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
envelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
envelope.addNamespaceDeclaration("soap", "http://schemas.xmlsoap.org/soap/envelop/");
SOAPBody body = message.getSOAPBody();
SOAPElement bodyElement = body.addChildElement("GetParameter");
bodyElement.setAttribute("xmlns", "http://examples/2001");
bodyElement = body.addChildElement("request");
SOAPElement paramsElement = bodyElement.addChildElement("MonCode");
paramsElement.setAttribute("xmlns", "http://newsite/mon");
paramsElement.addTextNode("Latency");
paramsElement = bodyElement.addChildElement("TimeFrom");
paramsElement.setAttribute("xmlns", "http://newsite/mon");
paramsElement.addTextNode("2016-10-26T11:00");
paramsElement = bodyElement.addChildElement("TimeTo");
paramsElement.setAttribute("xmlns", "http://newsite/mon");
paramsElement.addTextNode("2016-10-26T12:00");
结果我收到这样的 SOAP 请求
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelop/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header/>
<SOAP-ENV:Body>
<GetParameter xmlns=""/>
<request>
<MonCode xmlns="">Latency</MonCode>
<TimeFrom xmlns="">2016-10-26T11:00</TimeFrom>
<TimeTo xmlns="">2016-10-26T12:00</TimeTo>
</request>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
一切都很好,但是属性“ http://examples/2001 ”“ http://newsite/mon ”的值在某处消失了。
我的错误是什么以及如何解决这个问题?
结果如下
生成的 SOAP 请求