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

调用SOAP Web服务的Java/Groovy方法(1.2版),java,web-services,soap,groovy,Java,Web Services,Soap,Groovy,我正在尝试使用Java/Groovy代码调用Web服务(版本1.2,并且没有针对该服务的版本1.1)。我试过以下几种选择 使用SAAJ String endpointURL = <<endpoint>> SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory

我正在尝试使用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)
字符串端点URL=
SOAPConnectionFactory SOAPConnectionFactory=SOAPConnectionFactory.newInstance();
SOAPConnection-SOAPConnection=soapConnectionFactory.createConnection();
//向SOAP服务器发送SOAP消息
def请求=
InputStream is=newbytearrayinputstream(Request.getBytes());
SOAPMessage SOAPMessage=MessageFactory.newInstance(SOAPConstants.SOAP\u 1\u 2\u协议).createMessage(null,is);
SOAPMessage soapResponse=soapConnection.call(SOAPMessage,端点URL)
使用Groovy WsLite

 def client = new SOAPClient(<<endpoint>>)
 def response = client.send(SOAPVersion.V1_2, <<RequestXML>>)
def client=new SOAPClient()
def response=client.send(SOAPVersion.V1_2,)
在这两种情况下,I am receivig和来自服务的错误指示版本不匹配。底层架构是Oracle服务总线

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


有人能帮我理解我这里缺少的是什么吗?

您的底层oracle服务总线可能配置为仅支持SOAP 1.1版本。您是否将代码更改为使用SOAPConstants.SOAP_1_1_协议并尝试相同的方法

如果这样做有效,则必须启用OSB以支持1.1和1.2 soap版本


感谢您,在SOAP版本1.2中,通过将SOAPAction添加为mimeheader解决了这个问题。我能够通过将SOAPAction与SOAPVersion一起传递来解决这个问题

如果SAAJ通过了

MimeHeaders mimeh = message.getMimeHeaders();
mimeh.addHeader("SOAPAction",<<soapaction>>);
MimeHeaders mimeh=message.getMimeHeaders();
mimeh.addHeader(“SOAPAction”,译注);
对于Groovy wslite

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

谢谢Maruthi。是的,我已将其更改为1.1版并尝试,但收到相同的错误。根据我掌握的信息,OSB配置为仅支持1.2版本。我能够成功地从SoapUI调用服务,但不能通过此代码。当然。。你能检查你的类路径库吗,它们在加载SOAPVersion1.2时是否有冲突(我的意思是,错误是否在请求到达OSB之前发生)