Skip to content

Soap

发送一个SOAP请求,用于调用Web Service

业务属性

属性含义说明输入限定示例值
enable是否启用该控件,未启用时不编译是否编译选择值启用
name控件返回值命名控件输出值变量名常量value
text与控件关联的文本设计页控件显示常量getvalue
upstream上游服务可选已在资源配置中配置的Upstream资源选择值myUpstream
soapBodyRequest SOAP需导入Web服务描述语言(WSDL)文件,选择调用的服务,并设置入参
nameSpace命名空间soapBody导入的WSDL文件自动生成,正常情况不需更改常量/流程变量http://tempuri.org/
url请求URLsoapBody导入的WSDL文件自动生成,正常情况只需更改服务器IP常量/流程变量#{soapUrl}
original原始报文, 默认返回对象实体启用:直接返回http请求的原始报文,报文中有soap协议的载体数据
禁用:返回WebService调用的实体对象
选择值禁用
throwable发生异常时中断请求启用:控件执行异常时立即中断请求,并返回错误
禁用:控件执行异常时将被忽略,并继续执行其后的流程
控件底层使用http应用层传输协议
当http请求失败或http响应状态码不是200(http请求成功状态码)时,代表发生异常
选择值启用

soapBody设置步骤

点击soapBody右方的进行设置属性内容

  1. 导入WSDL文件

    点击右方的文件夹图标,选择对应的WDSL文件。 img_soap_1.png

    Web服务描述语言(WSDL)文件,用于描述Web服务的接口和操作的XML格式规范。许多Web服务都允许通过特定的URL直接访问WSDL文件,通常是在服务URL后面加上?wsdl参数来实现。

  2. 选择Web方法

    选择需要调用的Web方法。

  3. 设置入参

    选中Web方法后,会自动生成入参的XML格式载体,如下:

    注意:自动生成的XML载体请勿删除或更改,只需要替换?为参数内容

    img_soap_2.png 根节点为Web方法名,根节点的每一个子节点代表一个Web方法的入参参数(如图中的"name"为Web方法"SayHello"的一个入参参数)。

    当入参参数类型为 复杂类型 时,入参参数所代表的节点为一个内有层次结构的XML节点。

返回值

控件返回以属性name为名称的实体,该实体包含表示soap调用结果的属性resultresult的类型根据所调用的Web方法的返回参数类型一致。

soap控件调用的Web方法返回的参数为string时,resultstring类型;当soap控件调用的Web方法返回的参数为自定义的复杂类型时,result为该自定义类型的实体对象。

使用示例

出入参仅为基础类型的Web方法

假设有一个根据入参内容返回出参的Web方法,方法名为SayHello,出参和入参都为string类型数据。

  • soap控件设置

添加soap控件并命名为soap

展开soapBody属性,导入WSDL文件,并将入参参数(string类型)name设置为orapis

img_soap_3.png

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

img_soap_4.png
  • 输出调Web方法的结果

添加输出控件Returndata设置为:

json
{
  "soap": "#{soap}"
}
{
  "soap": "#{soap}"
}
img_soap_5.png
  • 接口调用

使用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>
img_soap_6.png
  • 输出调Web方法的结果

添加输出控件Returndata设置为:

json
{
  "soap": "#{soap}"
}
{
  "soap": "#{soap}"
}
img_soap_5.png
  • 接口调用

使用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类型)param1param2设置为or#{body.p2}

img_soap_7.png
  • 输出调Web方法的结果

添加输出控件Returndata设置为:

json
{
  "soap": "#{soap}"
}
{
  "soap": "#{soap}"
}
img_soap_5.png
  • 接口调用

使用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"
    }
}