gpt4 book ai didi

java - Spring-WS 为 SOAP 版本 1.2 设置 SOAPAction header

转载 作者:行者123 更新时间:2023-12-02 04:25:12 25 4
gpt4 key购买 nike

我必须使用 Spring-WS 连接到 SOAP 1.2 Web 服务,但在设置服务所需的 SOAPAction header 时遇到困难。我已经看过了herethere ,但似乎没有人给出适用于我的情况的解决方案。

我收到一条错误消息,基本上指出 SOAPAction 不能为空。 (如果需要,我会发布实际的错误消息)

WebServiceTemplate 的默认行为似乎是将 header 作为空字符串发送。

我使用了两种 WebServiceTemplate 方法来设置操作

  1. 使用 SoapActionCallback使用 webServiceTemplate#sendAndReceive()
  2. 使用 setSoapAction( String s ) 手动设置回调中的 header

选项 1 不执行任何操作。选项 2 设置 header ,但只是暂时的。如果我在回调中记录 getSoapAction() 调用,我可以看到它已设置,但它没有发送到任何地方。至少不像我怀疑的那样作为服务所需的单独 header 。

我挖掘了一些 SaajSoapMessage implementation 的来源事实上,它是将操作设置为 Content-Type header 的一部分,根据我读到的一些引用资料,这是正确的行为。问题是我也没有在 Content-Type header 中看到该操作。

其他 SO 问题的答案表明 Saaj 实现中存在错误,导致操作 header 的更改被忽略。根据问题时间戳,我希望它能够针对正在使用的版本进行修复。

出于调试目的,我使用我创建的 SoapUI 模拟。我无权访问实际 WS 实现的源代码或日志。我相信它使用 .NET/WCF(如果这有什么区别的话)。

所以,这一切都归结为一个简单的问题:如何使用 Spring-WS 设置 SOAP 1.2 的 SOAPAction header

我正在使用 Spring-WS 版本 2.1.4-RELEASE,但不是对 Spring-core 版本 3.2.4 等的默认依赖项,而是为相同的库手动设置依赖项,但对于版本 3.2 .7.这样做的原因是我希望拥有与 Grails 2.3.6 附带的完全相同的 Spring 版本,其中将集成该组件。

最佳答案

我也遇到了这个问题,找到了解决办法:您可以点击这个网址:https://spring.io/guides/gs/consuming-web-service/你会看到

public GetQuoteResponse getQuote(String ticker) {

GetQuote request = new GetQuote();
request.setSymbol(ticker);

log.info("Requesting quote for " + ticker);

GetQuoteResponse response = (GetQuoteResponse) getWebServiceTemplate()
.marshalSendAndReceive("http://www.webservicex.com/stockquote.asmx",
request,
new SoapActionCallback("http://www.webserviceX.NET/GetQuote"));

return response;
}

来自此演示 enter image description here

这就是答案!

关于java - Spring-WS 为 SOAP 版本 1.2 设置 SOAPAction header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611838/

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