gpt4 book ai didi

调用 SOAP Web 服务的 Java/Groovy 方法(版本 1.2)

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

我正在尝试使用 Java/Groovy 代码调用 Web 服务(版本 1.2,但没有该服务的版本 1.1)。我尝试过以下选项

使用SAAJ

String endpointURL = <<endpoint>>
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Send SOAP Message to SOAP Server
def Request = <<Request XML>>
InputStream is = new ByteArrayInputStream(Request.getBytes());
SOAPMessage soapMessage = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage(null, is);
SOAPMessage soapResponse = soapConnection.call(soapMessage, endpointURL)

使用 Groovy WsLite

 def client = new SOAPClient(<<endpoint>>)
def response = client.send(SOAPVersion.V1_2, <<RequestXML>>)

在这两种情况下,我都收到来自服务的错误,表明版本不匹配。底层架构是Oracle Service Bus。

我能够使用相同的代码调用版本 1.1 和 1.2 都提供的 Web 服务。我怀疑在这种情况下我们只能调用属于版本 1.1 的服务

有人可以帮助我理解我在这里缺少什么吗?

最佳答案

在 SOAP 版本 1.2 的情况下,通过添加 SOAPAction 作为 mimeheader 解决了该问题。我能够通过将 SOAPAction 与 SOAPVersion 一起传递来解决此问题

如果SAAJ通过了

MimeHeaders mimeh = message.getMimeHeaders();
mimeh.addHeader("SOAPAction",<<soapaction>>);

如果是 Groovy wslite

def response = client.send(SOAPVersion.V1_2, SOAPAction: <<soapaction>>,<<RequestXML>>)

关于调用 SOAP Web 服务的 Java/Groovy 方法(版本 1.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534275/

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