HTTP Properties V2

Here's a second cut at describing a subset of the interesting required HTTP properties.  I've added transfer-codings, http headers, and content negotiation, as well as small updates to authentication for extensibility

HTTP Properties in Bindings

How the HTTP Properties extend WSDL

http:Accepts="*"
http:AuthenticationType="basic|digest|none|*"
http:AuthenticationRealm="*"
http:Cookies="xsd:boolean"
http:Transfer-Coding="*"
http:header element with isOptional attribute

The OPTIONAL Accepts attribute indicates the media types which are acceptable for the message.  This extensible string follows the syntax of the HTTP Accepts header.  In the case of input messages, it indicates the which media types it will accept.  In output messages, it indicates which media types it can generate.  A client may use the http:Accepts value for output messages to help it specify the Accepts value it will send.
The OPTIONAL Authentication attribute indicates that HTTP Authentication will be used, and the type that will be used.  The default is none.  This is extensible.
The OPTIONAL Realm attribute indicates the HTTP realm that will be used.  The Realm attribute MUST not be specified if the AuthenticationType attribute is != none
The OPTIONAL Cookies attribute indicates that the Operation output may contain HTTP cookie control (ie set cookie) headers.  The default is false.  The output receiver is expected to obey the HTTP State Management specification in handling cookie control.
The OPTIONAL header element is an extensible element that contains http header strings.  The header element has REQUIRED isOptional attribute.  isOptional=true means that the header may or may not be sent.  false indicates that the header must be sent.
The OPTIONAL Transfer-Coding attribute indicates the transfer-codings it is acceptable for the message.  The extensible string follows the syntax of the HTTP transfer coding header.  In the case of input messages, it indicates which transfer codings it will accept.  In output messages, it indicates which transfer codings it can generate. 

The attributes may be attributes on the binding element.  They set the default for contained binding operations.

The attributes may be attributes on the binding operation elements.  They over-ride any of the equivalent attributes in the binding elements.  The Accepts, header, and Transfer-Coding may be set on the input or output element of the binding operation.  

When these are attributes of a binding element, the binding element must EITHER be HTTP:binding, or be a wsoap:binding element with a protocol that is compatible with HTTP. 

The elements may be elements that are children of the input or output elements of binding operation.  There may be multiple children.

Example HTTP Binding

  <binding>
    <http:binding methodDefault="xsd:string"? http:Authentication="basic"/>
    <operation>
      <http:operation location="xsd:anyURI"?
	  method="xsd:string"?
	  separator="xsd:string"?
        http:Authentication="digest"
	  http:Cookies="true"
        http:Accepts="gzip">
      <input>
         <http:header>depth=infinite</http:header> <!-- sample header on a webDAV LOCK -->
      </input>
    </operation>

Example SOAP Binding

<binding name="xs:NCName" interface="xs:QName"? >
    <documentation />?

    <wsoap:binding protocol="xs:anyURI" http:Cookies="true"/>

    <operation ref="xs:QName" >

      <wsoap:operation mep="xs:anyURI"?
                       webMethod="xs:string"? 
                       action="xs:anyURI"? 
                       mediaType="xs:string"?
                       http:Authentication="basic"?>?

      <input messageLabel="xs:NCName"? >
        <documentation />?
        <wsoap:header element="xs:QName" 
                      mustUnderstand="xs:boolean"?
                      role="xs:anyURI"?
                      relay="xs:boolean"? 
                      reinsert="xs:boolean"? />*
      </input>*

      <output messageLabel="xs:NCName"? >
        <documentation />?
        <wsoap:header ... />*
      </output>*

Cheers,
Dave

Received on Monday, 17 May 2004 17:31:27 UTC