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"的一个入参参数)。
当入参参数类型为 复杂类型 时,入参参数所代表的节点为一个内有层次结构的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"
}
}