Appearance
Soap 
发送一个SOAP请求,用于调用Web Service
业务属性 
| 属性 | 含义 | 说明 | 输入限定 | 示例值 | 
|---|---|---|---|---|
| enable | 是否启用该控件,未启用时不编译 | 是否编译 | 选择值 | 启用 | 
| name | 控件返回值命名 | 控件输出值变量名 | 常量 | value | 
| text | 与控件关联的文本 | 设计页控件显示 | 常量 | getvalue | 
| upstream | 上游服务 | 可选已在资源配置中配置的Upstream资源 | 选择值 | myUpstream | 
| soapBody | Request SOAP | 需导入Web服务描述语言(WSDL)文件,选择调用的服务,并设置入参 | ||
| nameSpace | 命名空间 | 由soapBody导入的WSDL文件自动生成,正常情况不需更改 | 常量/流程变量 | http://tempuri.org/ | 
| url | 请求URL | 由soapBody导入的WSDL文件自动生成,正常情况只需更改服务器IP | 常量/流程变量 | #{soapUrl} | 
| original | 原始报文, 默认返回对象实体 | 启用:直接返回http请求的原始报文,报文中有soap协议的载体数据 禁用:返回WebService调用的实体对象 | 选择值 | 禁用 | 
| throwable | 发生异常时中断请求 | 启用:控件执行异常时立即中断请求,并返回错误 禁用:控件执行异常时将被忽略,并继续执行其后的流程 控件底层使用http应用层传输协议。 当http请求失败或http响应状态码不是 200(http请求成功状态码)时,代表发生异常 | 选择值 | 启用 | 
soapBody设置步骤 
点击soapBody右方的 进行设置属性内容
进行设置属性内容
- 导入WSDL文件 - 点击右方的文件夹图标,选择对应的WDSL文件。  - Web服务描述语言(WSDL)文件,用于描述Web服务的接口和操作的XML格式规范。许多Web服务都允许通过特定的URL直接访问WSDL文件,通常是在服务URL后面加上 - ?wsdl参数来实现。
- 选择Web方法 - 选择需要调用的Web方法。 
- 设置入参 - 选中Web方法后,会自动生成入参的XML格式载体,如下: - 注意:自动生成的XML载体请勿删除或更改,只需要替换 - ?为参数内容 根节点为Web方法名,根节点的每一个子节点代表一个Web方法的入参参数(如图中的"name"为Web方法"SayHello"的一个入参参数)。 根节点为Web方法名,根节点的每一个子节点代表一个Web方法的入参参数(如图中的"name"为Web方法"SayHello"的一个入参参数)。- 当入参参数类型为 复杂类型 时,入参参数所代表的节点为一个内有层次结构的XML节点。 
返回值 
控件返回以属性name为名称的实体,该实体包含表示soap调用结果的属性result,result的类型根据所调用的Web方法的返回参数类型一致。
当soap控件调用的Web方法返回的参数为string时,result为string类型;当soap控件调用的Web方法返回的参数为自定义的复杂类型时,result为该自定义类型的实体对象。
使用示例 
出入参仅为基础类型的Web方法 
假设有一个根据入参内容返回出参的Web方法,方法名为SayHello,出参和入参都为string类型数据。
- soap控件设置
添加soap控件并命名为soap
展开soapBody属性,导入WSDL文件,并将入参参数(string类型)name设置为orapis

设置完soapBody属性后点击确认,自动生成属性nameSpace和url的值,只需要修改url中的服务器IP即可。

- 输出调Web方法的结果
添加输出控件Return,data设置为:
json
{
  "soap": "#{soap}"
}{
  "soap": "#{soap}"
}
- 接口调用
使用curl请求接口:
$ curl http://localhost:6636/api/soap$ curl http://localhost:6636/api/soap接口返回:
json
{
    "soap": {
        "result": "Hello orapis"
    }
}{
    "soap": {
        "result": "Hello orapis"
    }
}出入参为复杂结构的Web方法 
假设有一个按入参内容原路返回的Web方法,方法名为returnMethod,出参和入参都为自定义复杂类型。
- soap控件设置
添加soap控件并命名为soap
展开soapBody属性,导入WSDL文件,并将入参参数(自定义类型)Employee设置为:
xml
<Employee>
    <Name>张三</Name>
    <Age>30</Age>
    <Position>软件工程师</Position>
    <Salary>80000</Salary>
</Employee><Employee>
    <Name>张三</Name>
    <Age>30</Age>
    <Position>软件工程师</Position>
    <Salary>80000</Salary>
</Employee>
- 输出调Web方法的结果
添加输出控件Return,data设置为:
json
{
  "soap": "#{soap}"
}{
  "soap": "#{soap}"
}
- 接口调用
使用curl请求接口:
$ curl http://localhost:6636/api/soap$ curl http://localhost:6636/api/soap接口返回:
json
{
    "soap": {
        "result": {
            "Name": "张三",
            "Age": "30",
            "Position": "软件工程师",
            "Salary": "80000"
        }
    }
}{
    "soap": {
        "result": {
            "Name": "张三",
            "Age": "30",
            "Position": "软件工程师",
            "Salary": "80000"
        }
    }
}多个入参参数的Web方法 
假设有一个根据入参内容返回出参的Web方法,方法名为contact,出参和入参都为string类型数据,且入参参数有两个。
- soap控件设置
添加soap控件并命名为soap
展开soapBody属性,导入WSDL文件,并将入参参数(string类型)param1和param2设置为or和#{body.p2}

- 输出调Web方法的结果
添加输出控件Return,data设置为:
json
{
  "soap": "#{soap}"
}{
  "soap": "#{soap}"
}
- 接口调用
使用curl请求接口:
$ curl http://localhost:6636/api/soap -d "{\"p2\":\"apis\"}"$ curl http://localhost:6636/api/soap -d "{\"p2\":\"apis\"}"接口返回:
json
{
    "soap": {
        "result": "orapis"
    }
}{
    "soap": {
        "result": "orapis"
    }
}