Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringWebServices向Soap请求添加元素_Java_Spring_Web Services_Soap - Fatal编程技术网

Java SpringWebServices向Soap请求添加元素

Java SpringWebServices向Soap请求添加元素,java,spring,web-services,soap,Java,Spring,Web Services,Soap,在我的java项目中,我使用SpringWebServices向供应商提供的端点发送xml消息。(他们要求我们这样做) 然而,我注意到我的一个请求失败了。通过将请求发布到request-bin进行进一步分析,我注意到某些元素正在以soap-ENV前缀添加到我的soap消息中 我的问题是——是否可以使用SpringWebServices,但不将这些额外的元素添加到我的soap消息中 调用Web服务的代码 public void callWebservice(字符串corpId){ } 我要发送的X

在我的java项目中,我使用SpringWebServices向供应商提供的端点发送xml消息。(他们要求我们这样做)

然而,我注意到我的一个请求失败了。通过将请求发布到request-bin进行进一步分析,我注意到某些元素正在以soap-ENV前缀添加到我的soap消息中

我的问题是——是否可以使用SpringWebServices,但不将这些额外的元素添加到我的soap消息中

调用Web服务的代码

public void callWebservice(字符串corpId){

}

我要发送的XML消息

 <retrieve:retrieveEntities xmlns:retrieve="http://www.test/2009/04/retrieve">
  <retrieve:mappingVersion>http://www.test.com/2009/04</retrieve:mappingVersion>
  <retrieve:query>    
  </retrieve:query>
  <retrieve:attributes />
</retrieve:retrieveEntities>

http://www.test.com/2009/04
请求箱中的消息

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<retrieve:retrieveEntities xmlns:retrieve="http://www.test/2009/04/retrieve"><retrieve:mappingVersion>http://www.test.com/2009/04</retrieve:mappingVersion><retrieve:query/>
<retrieve:attributes/>
</retrieve:retrieveEntities>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

http://www.test.com/2009/04
谢谢
Damien

您正在调用的web服务不是SOAP web服务,而是一个简单的基于XML的web服务。默认情况下,
WebServiceTemplate
假定您正在发送SOAP消息,因此会创建一个SOAP消息

如果不想发送SOAP消息,则需要配置
WebServiceTemplate
以发送普通XML消息。为此,将as消息工厂添加到
WebServiceTemplate
。(根据您使用的
WebServiceGateway
基类的代码判断

<bean id="yourGateway" class="your class">
    <property name="messageFactory">
        <bean class="org.springframework.ws.pox.dom.DomPoxMessageFactory" />
    </property>
</bean>


另请参阅参考指南。

SOAP的全部要点是添加了SOAP信封和标头。如果删除了SOAP部分,则不再有SOAP web服务。我完全理解您的观点,但遗憾的是,供应商不支持这样的信封和标头,那么它就不是SOAP web服务,那么就不要将其作为邮件发送SOAP。将您的web服务模板配置为使用
DomPoxMessageFactory
而不是
SoapMessageFactory
(这是默认设置)。这就成功了-干杯
<bean id="yourGateway" class="your class">
    <property name="messageFactory">
        <bean class="org.springframework.ws.pox.dom.DomPoxMessageFactory" />
    </property>
</bean>