Re: SOAPAction and Default Action

Arun Gupta wrote:
> Anish,
> 
> R2745 in BP 1.1 [1] defines both the absence of SOAPAction or it's value 
> as empty string as empty string in the HTTP header field. I interpret 
> that as empty string is not a valid value and thus implicit Action 
> header should be generated in the SOAP message if SOAPAction is either 
> not present or present with an empty string.
> 

Arun,

SOAP 1.1 requires the SOAPAction HTTP header.
Therefore, whether there is a value specified in WSDL or not, the SOAP 
request must contain the HTTP header.

The issue before WS-I BP WG was what should the value of that HTTP 
header be if it is not specified in WSDL (no soapAction attribute 
present) and the WG decided on "". The reasons for requiring the quotes 
was interoperability: there were some stacks that required the quotes. I 
would not interpret R2745 to mean that empty string for soapAction attr 
is not a valid value. It is a valid value which also happens to be the 
default value per R2745.

I'm not necessarily pushing back on allowing [action] defaulting when 
the SOAPAction is specified to be "" (which does not contradict the 
requirement in WS-Addr SOAP binding that requires the two to be the same 
or SOAPAction to be ""). But I would like to understand if there is a 
good reason to do so. What problem does it solve? I don't quite see the 
argument that soapAction="" => unspecified.

-Anish
--

> [1] http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html#R2745
> 
> -Arun
> 
> Anish Karmarkar wrote:
>> Prasad,
>>
>> I tend to think the exact opposite. An empty string is a value, so I 
>> tend to think of #2 as having specified the SOAPAction value.
>>
>> -Anish
>> -- 
>>
>> Prasad Yendluri wrote:
>>> Hi Arun,
>>>
>>> Since it says "where a SOAPAction _value _is specified",  I tend to 
>>> think it covers #2 also, as a value had not been specified for 
>>> SOAPAction, considering empty string is not a "value". I agree 
>>> however that it would be clearer to exclude SOAPAction empty string 
>>> case explicitly.
>>>
>>> Regards,
>>> Prasad
>>>
>>> Arun Gupta wrote:
>>>>
>>>> Section 4.4.1 of WSDL Binding [1] says:
>>>>
>>>> -- cut here --
>>>> In the absence of a wsaw:Action attribute on a WSDL input element 
>>>> where a SOAPAction value is specified, the value of the [action] 
>>>> property for the input message is the value of the SOAPAction 
>>>> specified.
>>>> -- cut here --
>>>>
>>>> Consider the following 3 different SOAP bindings for an operation in 
>>>> WSDL 1.1:
>>>>
>>>> 1). <soap:operation soapAction="bindingSOAPAction"/>
>>>>
>>>> 2). <soap:operation soapAction=""/>
>>>>
>>>> 3). <soap:operation/>
>>>>
>>>> In 1)., SOAPAction is clearly specified. In 3). SOAPAction is 
>>>> clearly not specified. Should 2). be considered as specified or not 
>>>> specified ?
>>>>
>>>> A literal reading of the spec will mean that SOAPAction is 
>>>> specified, even though blank. I've seen 2). as a more common style 
>>>> in WSDLs. If there happens to more than one operation in a portType 
>>>> (not uncommon at all) and all the operation use 2)., then all the 
>>>> operations will have exactly same wsa:Action within a portType.
>>>>
>>>> I think the wording of the spec should be changed to specify that 
>>>> only a non-empty SOAPAction overrides the default Action.
>>>>
>>>> [1] http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/#explicitaction
>>>>
>>>> Thanks,
>>>> -Arun
> 

Received on Friday, 21 July 2006 05:42:05 UTC