WSDL <portType>元素

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>