我想将SMS服务公开为SOAP端点。我有短信服务在mule工作,但我目前有一个简单的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>
亲切的问候。
雅科
答案 0 :(得分:0)
我认为没有任何工具可以从SOAP示例创建WSDL文件,但您的架构看起来很简单,您应该能够通过一些helloworld wsdl教程手动创建它。另一种方法是尝试为服务创建Java实现,并在连接到端点时打印出wsdl。有关这两种方法的详细信息,请参阅Mule docs。
要测试和验证您的wsdl / soap端点,请安装SoapUI并创建一个测试项目,您可以在其中导入wsdl,生成请求(自动工作),查看它是否与您的示例匹配,然后配置端点请求将其发送到Mule inbound。
在Mule中,您有两个选项:您可以将服务实现为Java类,如上例所示,或者您可以将其实现为cxf:proxy-service,直接访问有效负载。在后一种方法中,您不需要任何Java类,只需将流程包装在SOAP API中即可。
更新:
SOAP请求几乎就是使用XML的HTTP调用,就像您的示例中的原始POST数据一样,因此您可以像任何POST数据一样访问Mule入口中的内容,并使用XPath解析它们。如果您定义了一个cxf:proxy-service,您将获得更多“真正的”SOAP服务功能,但您可以使用几乎任何HTTP侦听器接收SOAP调用,获取其内容,并使用客户端期望的字符串进行回复,并且客户不会知道差异。
如果您的Mule流与另一个SOAP服务联系,您可以使用服务器和客户端创建代理,例如this example。您也可以通过将?wsdl
附加到服务URL来获取其他SOAP服务的WSDL。这是SOAP的常见做法。