WSDL <portType>
元素组合了多个消息(<message>
)元素,以形成完整的单向或往返操作。
例如,<portType>
可以将一个请求和一个响应消息组合成单个请求/响应操作。 这在SOAP服务中最常用。 portType
可以定义多个操作。
下面是从WSDL示例章节中获取一段代码 -
<portType name = "Hello_PortType">
<operation name = "sayHello">
<input message = "tns:SayHelloRequest"/>
<output message = "tns:SayHelloResponse"/>
</operation>
</portType>
下面是对上面示例代码的解释说明 -
portType
元素定义了一个名称为sayHello
的操作。- 该操作由单个输入消息
SayHelloRequest
和一个输出消息SayHelloResponse
组成。
操作模式
WSDL支持四种基本操作模式 -
1. 单向操作
该服务收到一条消息。 因此,操作具有单个input
元素。 单向操作的语法是 -
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken">
<wsdl:input name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
2. 请求 - 响应
该服务接收消息并发送响应。 因此,操作有一个input
元素,后跟一个output
元素。 要封装错误,还可以指定可选的fault
元素。 请求-响应操作的语法是 -
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/>*
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
3. 询问 - 响应
该服务发送消息并接收响应。 因此,操作有一个output
元素,后跟一个input
元素。 要封装错误,还可以指定可选的fault
元素。 询问响应操作的语法是 -
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/>*
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
4. 通知
该服务发送一条消息。 因此,操作具有单个input
元素。 以下是通知操作的语法 -
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken">
<wsdl:output name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>