gpt4 book ai didi

java - Spring Webservices 将元素添加到 Soap 请求

转载 作者:行者123 更新时间:2023-11-30 03:15:54 24 4
gpt4 key购买 nike

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

但是我注意到我的 1 个请求失败了。通过将请求发布到请求箱进行进一步分析 - 我注意到某些元素被添加到我的 SOAP 消息中,前缀为 SOAP-ENV

我的问题是 - 是否可以使用 spring webservices 但不将这些额外的元素添加到我的 SOAP 消息中

调用 Web 服务的代码

公共(public)无效callWebservice(字符串corpId){

StringBuilder soapMessage = FileUtil.readFileContent(BASE_TALEO_CONFIG_LOCATION + "/CallWebservice.xml");

StreamSource source = new StreamSource(new StringReader(soapMessage.toString()));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(bos);

boolean webserviceResult = webServiceTemplate.getWebServiceTemplate().sendSourceAndReceiveToResult(baseURL, source, result);
System.out.println("webserviceResult:" + webserviceResult);

}

我要发送的 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>

请求箱中的消息

    <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>

谢谢达米恩

最佳答案

您调用的 Web 服务不是 SOAP Web 服务,而是基于纯 XML 的 Web 服务。默认情况下,WebServiceTemplate 假定您正在发送 SOAP 消息,并因此创建 SaajSoapMessageFactory .

如果您不想发送 SOAP 消息,则需要配置 WebServiceTemplate 以发送纯 XML 消息。为此添加 DomPoxMessageFactory作为 WebServiceTemplate 的消息工厂。 (判断您正在使用 WebServiceGateway 基类的代码。

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

另请参阅this section引用指南。

关于java - Spring Webservices 将元素添加到 Soap 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com