我是第一次使用SOAP,并试图创建一个将SOAP请求发送到服务器的Java进程。我已经在SoapUI上测试了成功的请求,但是从Java程序发出的请求失败了。当比较两者之间的确切xml时,我注意到Java顶部有这个:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
工作并使用导入的wsdl文件的SoapUI就是这样:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
所以由于某种原因,我在Java中创建的消息是将这3个新属性添加到信封头中,我不知道为什么。我正在使用javax.xml.soap API,而我的生成SOAPMessage的代码是以下标准过程:
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
在调试时,我在创建消息的调用之后放置了一个断点,并且SOAPMessage元素已经包含那些不需要的属性。有谁知道如何摆脱他们?我相信信封中的这种差异是导致Java进程失败而SoapUI调用正常的原因。
谢谢