私は、あらゆるタイプのリクエストドキュメント(名前空間の有無にかかわらず)を受け入れることができるWebサービスクライアントを構築しようとしていました.Webサービスを呼び出します。しかし、私は以下に直面していました。誰でもこれについて私を助けてください。ドキュメント ファクトリに対して 'setNamespaceAware' を true に設定するよう求めた同様の問題の解決策であることは承知しています。
factorydocFactory = DocumentBuilderFactory.newInstance();
docFactory.setNamespaceAware(true);
しかし、私の場合、要求ドキュメントは別の場所から来ており、私はそれを制御できません。ドキュメントを受け取ったら、名前空間を無視するようにする必要がありますが、これを行う方法がわかりません。
コード:
public SOAPMessage createSoapRequest(Document requestDoc)
throws SOAPException, DOMException, ParserConfigurationException, SAXException, IOException {
System.setProperty("javax.xml.soap.MessageFactory", "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl");
MessageFactory mf = SOAPMessageFactory1_1Impl.newInstance();
SOAPMessage request = mf.createMessage();
SOAPPart soapPart = request.getSOAPPart();
SOAPEnvelope env = soapPart.getEnvelope();
SOAPBody soapBody = env.getBody();
/* adding the input to soapbody */
soapBody.addDocument(requestDoc);
return request;
}
渡された入力:
<tem:abc xmlns:tem="http://tempuri.org/">
<tem:def>
<MESSAGE>
<Component>
<Parameters>
<adsfds>123 </adsfds>
</Parameters>
</Component>
</MESSAGE>
</tem:def>
</tem:abc>
私が得る例外:
Exception in thread "main" org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.setName(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.ElementNSImpl.<init>(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl.<init>(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.impl.ElementFactory.createElement(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl.createElement(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.importNode(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.importNode(Unknown Source)
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.importNode(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl.importNode(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl.addD`enter code heredocument(Unknown Source)
at com.custom.util.TestWebServiceCaller.createSoapRequest(TestWebServiceCaller.java:224)
at com.custom.util.TestWebServiceCaller.invokeWS(TestWebServiceCaller.java:103)
at TestWS.main(TestWS.java:30)