WSDL - <portType> 元素

<portType> 元素将多个消息元素组合起来,形成一个完整的单向或往返操作。

例如,<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 支持四种基本操作模式 −

单向

服务接收消息。因此,该操作有一个 input 元素。单向操作的语法是 −

<wsdl:definitions .... > 
   <wsdl:portType .... > *
      <wsdl:operation name = "nmtoken">
         <wsdl:input name = "nmtoken"? message = "qname"/>
      </wsdl:operation>
   </wsdl:portType >
</wsdl:definitions>

请求-响应

服务接收消息并发送响应。因此,该操作有一个 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>

请求响应

服务发送消息并接收响应。因此,该操作有一个 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>

通知

服务发送一条消息。因此,该操作只有一个 output 元素。以下是通知操作的语法 −

<wsdl:definitions .... >
   <wsdl:portType .... > *
      <wsdl:operation name = "nmtoken">
         <wsdl:output name = "nmtoken"? message = "qname"/>
      </wsdl:operation>
   </wsdl:portType>
</wsdl:definitions>