HandleSOAPHttpRequest 提供SOAP服务
说明
该组件类似HandleHttpRequest组件,提供HTTP服务,通过配置服务端口以及请求路径,作为服务器方提供对外的服务,以便客户端SOAP请求访问。
示例说明
模拟一QQ在线状态查询服务:
http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline
请求发送数据为XML报文(QQ号为123456):
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<qqCheckOnline xmlns="http://WebXml.com.cn/">
<qqCode>123456</qqCode>
</qqCheckOnline>
</soap:Body>
</soap:Envelope>
返回类似的报文,如果Y表示在线:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<qqCheckOnlineResponse xmlns="http://WebXml.com.cn/">
<qqCheckOnlineResult>Y</qqCheckOnlineResult>
</qqCheckOnlineResponse>
</soap:Body>
</soap:Envelope>
流程编排
HandleSOAPHttpRequest 组件配置
- 监听端口:21001 ,可设置2万以上,且避免已被使用
- 请求路径:/orchsym/soap/qqonline
- HTTP会话服务,如果没有可创建一个,用于与配套的HandleSOAPHttpReponse组件构建会话
- WSDL定义选项:可选
URI
和自定义
,如果为URI,支持在线,或磁盘上的WSDL文件;自定义选项则可将WSDL内容放到对应的WSDL自定义内容
参数中。 - WSDL URI:
http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
- 报文选项:可选原样输出,或仅输出报文,或直接将报文体转换为JSON格式。
ReplaceText 组件配置
由于这里是模拟,所以用该组件来生成直接返回的报文体,当然也可以请求第三方接口或服务,然后将结果封装成SOAP报文。
这里简单的设置在线(Y):
<qqCheckOnlineResponse xmlns="http://WebXml.com.cn/">
<qqCheckOnlineResult>Y</qqCheckOnlineResult>
</qqCheckOnlineResponse>
HandleSOAPHttpReponse 组件配置
- 状态码:200
- HTTP会话服务:需要设置跟request相同的服务,以保证会话共享
- 输入选项:用于控制标识输入流中的数据是报文体,还是全部内容。
测试请求
这里选用PostMan的测试结果:
其中请求方式为 POST http://localhost:21001/orchsym/soap/qqonline
来发送请求数据,
或 POST http://localhost:21001/orchsym/soap/qqonline?wsdl
都可。
返回的报文:
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<qqCheckOnlineResponse xmlns="http://WebXml.com.cn/">
<qqCheckOnlineResult>Y</qqCheckOnlineResult>
</qqCheckOnlineResponse>
</soapenv:Body>
</soapenv:Envelope>
除了部分命名空间未设置,报文部分基本一致。
GET WSDL描述
GET http://localhost:21001/orchsym/soap/qqonline?wsdl
可获得WSDL定义内容:
流程模板
参见附件(请右键另存保存):模板