如何使用apache-camel调用Soap Web服务

时间:2019-02-01 11:00:28

标签: wsdl apache-camel soap-client

我有一些服务器运行的soap Web服务。

<wsdl:operation name="lookup">
<wsdl:input message="tns:LookupRequest" name="LookupRequest"> </wsdl:input>
<wsdl:output message="tns:LookupResponse" name="LookupResponse"> 
</wsdl:output>
</wsdl:operation>

它具有作为Web服务的查找,并且此Web服务采用LookupRequest 对象作为输入。

所以我的问题是如何使用apache camel调用此查找Web服务 以及如何向该Web服务输入输入,即:查找对象。

还有我怎么知道我们的小麦是一个jax-ws,因为我只有 wsdl文件,我想使用apache-为该Web服务创建客户端 骆驼。

LookupRequest类看起来像这样:-

public class LookupRequest {

        @XmlElement(name = "EntityReference")
        protected List<EntityReference> references;
        @XmlElement(name = "AttachmentReference")
        protected List<AttachmentLookupReference> attachmentReferences;
        @XmlAttribute(name = "countryCode")
        protected String countryCode;
        @XmlAttribute(name = "languageCode")
        protected String languageCode;
}

我是否需要创建lookupRequest对象并将其发送到服务器,或者也可以发送String?

2 个答案:

答案 0 :(得分:1)

首先,您需要借助CXF wsdl2java从WSDL生成客户机。然后,您可以利用camel-cxf组件将请求发送到要调用服务器的服务,这里是an example,您可以看看。

答案 1 :(得分:0)

您可以尝试发送xml请求:

首先设置两个标题 .setheader(“ operationNamespace”,tns是其别名的名称空间) .setheader(“ operationName”,“ lookup”)

,然后使用cfx组件 “ cxf:{{url}}?wsdlURL = someWsdlInclasspath.wsdl&dataFormat = payload”

然后您可以将请求发送为xml(正文)