Mule-如何发送SOAP Web服务请求?
嗨,我在骡子里做简单的POC 我有一个web服务,我想让它成为客户端 这是SOAPWeb服务,我想向它发送请求,但我没有办法。请告诉我一些想法 以下是代码: 骡子: 以下是运行中的WSDL:我感到困惑,因为我是mule的新手,所以大约需要4天的时间Mule-如何发送SOAP Web服务请求?,web,service,mule,Web,Service,Mule,嗨,我在骡子里做简单的POC 我有一个web服务,我想让它成为客户端 这是SOAPWeb服务,我想向它发送请求,但我没有办法。请告诉我一些想法 以下是代码: 骡子: 以下是运行中的WSDL:我感到困惑,因为我是mule的新手,所以大约需要4天的时间 <operation name="RetrieveServiceContent"> <input message="vim2:RetrieveServiceContentRequestMsg" />
<operation name="RetrieveServiceContent">
<input message="vim2:RetrieveServiceContentRequestMsg" />
<output message="vim2:RetrieveServiceContentResponseMsg" />
<fault name="RuntimeFault" message="vim2:RuntimeFaultFaultMsg"/>
</operation>
有几种方法可以做到这一点。我不希望我们像MuleStudio希望你那样做,因为我从来没有真正做到过。基本上,每当我创建webservice客户端时,我的mule配置如下所示:
<custom-transformer class="nl.thorax.someprogram.transformers.SomeRequestTransformer
<https:outbound-endpoint ref="someEndpoint" >
<cxf:jaxws-client
clientClass="nl.thorax.someprogram.someclass"
wsdlLocation="http://somedomain?wsdl
port="somePort"
operation="someOperation"/>
</https:outbound-endpoint>
<custom-transformer class="nl.thorax.someprogram.transformers.SomeResponseTransformer
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException
{
RequestObject request = new RequestObject();
request.setText("Hello!");
message.setPayload(request);
return message;
}
我创建请求,设置变量并将其返回给Mule。RequestObject是由WSDL2Java生成的一个类,对应于WSDL中的某些操作。解析响应的方式基本相同
现在,根据经验,我知道很多Web服务的工作方式并不完全相同。试着自己实现我的例子。如果这不起作用,请提供您的Mule配置和您可能正在使用的所有Java类
编辑:
我已经创建了一个实际有效的方法示例。这些文件可在以下网址下载:。请查看文件中的注释。当然,您必须手动创建Mule项目
示例的注意事项:
- Mule配置的XML表示可以在归档文件的“resources”文件夹中找到
- “nl.example.example”文件夹包含所有生成的JAX-WS文件
- Mule配置中的WSDL位置必须更改,因为它包含绝对路径
- 该示例在
供您拨打。该流包含一个转换器,该转换器使用预定义参数创建示例调用。然后它尝试连接到Web服务。我在创建模拟服务时使用了SOAPUI使用的默认地址,但这当然可以更改为您想要的任何内容。Web服务(据推测)返回的内容会回显到用户的浏览器中http://localhost:8088
- 在本例中,参数实际上是字符串,因为WSDL请求不包含任何内容。要确定要传递给cxf:jaxws客户机的对象,请查看操作定义,该定义可以在生成的文件中的端口定义中找到
<custom-transformer class="nl.thorax.someprogram.transformers.SomeRequestTransformer
<https:outbound-endpoint ref="someEndpoint" >
<cxf:jaxws-client
clientClass="nl.thorax.someprogram.someclass"
wsdlLocation="http://somedomain?wsdl
port="somePort"
operation="someOperation"/>
</https:outbound-endpoint>
<custom-transformer class="nl.thorax.someprogram.transformers.SomeResponseTransformer
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException
{
RequestObject request = new RequestObject();
request.setText("Hello!");
message.setPayload(request);
return message;
}