0
我正在做一个开发,将SOAP
请求发送到远程Web服务并使用apache Camel
获得响应。向远程Web服务发送SOAP请求并使用apache获取响应Camel
在这种情况下,我使用下面提到的WSD1的cxf-codegen-plugin
成功生成了客户端wsdl2java代码。
- 样品WSDL网址:
http://www.webservicex.net/stockquote.asmx?WSDL
,并做一些研究之后,我在下面的示例代码创建发送SOAP请求,在那里定义的Web服务,并使用所产生的获得与Apache骆驼响应客户端代码。
CamelContext context = new DefaultCamelContext();
HttpComponent httpComponent = new HttpComponent();
context.addComponent("http", httpComponent);
ProducerTemplate template = context.createProducerTemplate();
GetQuote getQuote = new GetQuote();
getQuote.setSymbol("test123");
GetQuoteResponse getQuoteResponse = template.requestBody("http://www.webservicex.net/stockquote.asmx",getQuote, GetQuoteResponse.class);
System.out.println(getQuoteResponse);
但它给出了以下错误。
Caused by: org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: [email protected] of type: net.webservicex.GetQuote on: Message[ID-namal-PC-33172-1469806939935-0-1]. Caused by: No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected] Exchange[ID-namal-PC-33172-1469806939935-0-2]. Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected]]
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: net.webservicex.GetQuote to the required type: java.io.InputStream with value [email protected]
我在这里错过了什么?数据绑定?还是其他什么?我使用cxf生成客户端代码,因此我如何使用cxf发送此代码?
我只是想发送一个SOAP请求到远程Web服务并获得使用Apache Camel的响应。
- 骆驼版本:2.9.0
- Java版本:1.7.x/1.8.x的
非常感谢bgossit!它为此工作正常。我有一个问题。如果发送请求主体,如果它需要多个参数。例如:如何为以下类似的调用发送请求参数(messageHeader,securityHeader,sessionCreateRQ)(SessionCreateRS sessionCreateRS = sessionCreatePortType.sessionCreateRQ(messageHeader,securityHeader,sessionCreateRQ); //这是来自JAX-WS) – namalfernandolk
哦,我有一个愚蠢的答案..我只是将它们添加到列表并发送。有效!请分享更好的答案。 – namalfernandolk