Skip to main content

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定义内容:

流程模板

参见附件(请右键另存保存):模板