Web services Mule的入站SOAP端点

Web services Mule的入站SOAP端点,web-services,web,wsdl,mule,Web Services,Web,Wsdl,Mule,我想将SMS服务公开为SOAP端点。我在mule中使用SMS服务,但目前我有一个简单的HTTP端点 谁能帮助我将此SOAP服务的步骤和WSDL文件作为入站端点 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.sms.example.com/"> <soapenv:Header/> <soapenv:Body> &l

我想将SMS服务公开为SOAP端点。我在mule中使用SMS服务,但目前我有一个简单的HTTP端点

谁能帮助我将此SOAP服务的步骤和WSDL文件作为入站端点

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.sms.example.com/">
<soapenv:Header/>
<soapenv:Body>
  <ws:sendTextMessage>
<sender>%SENDERID%</sender>
<to>%TO%</to>
<text>%MESSAGE%</text>
  </ws:sendTextMessage>
</soapenv:Body>
</soapenv:Envelope>

%SENDERID%
%至%
%消息%
亲切的问候


Jaco

我认为没有任何工具可以从SOAP示例创建WSDL文件,但是您的模式看起来非常简单,您应该能够通过一些helloworld WSDL教程手动创建它。另一种方法是尝试为服务创建Java实现,当连接到端点时,它将打印出wsdl。有关这两种方法的更多信息,请参阅

要测试和验证wsdl/soap端点,请安装并创建一个测试项目,在该项目中导入wsdl,生成请求(自动工作),查看它是否与示例匹配,然后为请求配置端点以将其发送到Mule入站

在Mule中,您几乎有两种选择:您可以像上面的示例一样将服务实现为Java类,或者您可以将其实现为直接访问负载的Java类。在后一种方法中,您不需要任何Java类,只需将流包装在SOAP API中

更新:

SOAP请求基本上只是HTTP调用,使用XML(如示例中的XML)作为原始POST数据,因此您可以像任何POST数据一样在Mule inbounds中访问它们的内容,并使用XPath解析它们。如果您定义了一个cxf:proxy服务,您将获得更多的“真正的”SOAP服务功能,但是您可以接受几乎所有HTTP侦听器的SOAP调用,获取它们的内容,并使用客户机期望的字符串进行回复,而客户机将不知道其中的区别


如果您的Mule流与另一个SOAP服务联系,您可以使用服务器和客户机创建一个代理,如中所示。您还可以通过将
?WSDL
附加到服务URL来获取其他SOAP服务的WSDL。这是肥皂的常见做法。

Hi Anton。我知道你没有这些工具,我一直在寻找一个哈哈。我只需要将这些%占位符传递到mule流中的当前变量中。我必须编写Java代码还是可以通过MEL访问入站soap变量?请参阅ddossot的代理服务示例:。可以在dom到xml转换器之后使用xpath表达式来访问数据。当然,您可以直接从http入站获取soap调用数据,而不用使用Mule soap。这只是HTTP POST。例如,如果您不需要任何类型的错误处理…:)是的,我只是想得到那些车。另一端的系统以该格式进行soap调用。我可以把这些变量作为入站参数,还是作为有效载荷输入,然后我必须把它们从那里拉出来?非常感谢Anton。我设法找到了正确的xpath,但现在如果在HTTP端点之后尝试在有效负载上使用它,我会得到一个错误,即它是错误的类型。所以我想我需要改变它。正确使用的变压器是什么?再次感谢您对Mule的所有帮助。我收到以下错误:消息负载的类型为:ContentLengthinInputStream