Java-使用字符串XML信封中的SOAP Web服务
我使用SoapUI构建了以下XML信封,并将其封装在字符串中 ProcessJournal是一个没有参数并返回字符串的方法Java-使用字符串XML信封中的SOAP Web服务,java,xml,web-services,soap,envelope,Java,Xml,Web Services,Soap,Envelope,我使用SoapUI构建了以下XML信封,并将其封装在字符串中 ProcessJournal是一个没有参数并返回字符串的方法 String soapText = "<Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" + "<Header/>"
String soapText = "<Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" +
"<Header/>" +
"<Body>" +
"<upd:ProcessJournal/>" +
"</Body>" +
"</Envelope>";
问题是,在message.getSOAPBody();,我犯了一个错误
XML-22103: (Fatal Error) DOMResult can not be this kind of node.
Apr 16, 2013 12:05:06 PM com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory createEnvelope
SEVERE: SAAJ0511: Unable to create envelope from given source
我发现的所有示例在执行getSOAPBody()时都会出现相同类型的错误。我不知道您是否找到了解决此问题的方法。我最近看到了完全相同的错误,这是因为没有设置TransformerFactory 我使用了Saxon库中的TransformerFactory——可以获得它的jar 然后,我设置了一个引用Saxon TransformerFactory的系统属性:
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
当我重新运行代码时,错误就消失了
以上只是设置TransformerFactory的一种方法。我在这里找到了许多其他的方法:看起来问题在于soapText中的名称空间前缀。通过如下修改soapText,我能够无错误地执行您的示例,并且不需要手动设置任何TransformerFactory:
String soapText =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<upd:ProcessJournal/>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
String soapText=
"" +
"" +
"" +
"" +
"" +
"";
请注意,与Soap服务命名空间中的upd前缀相比,所有Soap元素中都添加了soapenv:前缀。谢谢您的帖子。因为没人能让它工作,我们最终走了另一条路。但是,当需要再次尝试时,我会尝试您的建议:)谢谢!
String soapText =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:upd=\"http://webservices.vm.vmc/UpdateCMA/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<upd:ProcessJournal/>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";