In the chapter 4.7.25 Describing SOAPAction of the basic profile http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html, it is indicated:
"Interoperability testing has demonstrated that requiring the SOAPAction HTTP header field-value to be quoted increases interoperability of implementations. Even though HTTP allows for header field-values to be unquoted, some implementations require that the value be quoted.
The SOAPAction header is purely a hint to processors. All vital information regarding the intent of a message is carried in the envelope.
R2744 A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted value equal to the value of the soapAction attribute of soapbind:operation, if present in the corresponding WSDL description.
R2745 A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted empty string value, if in the corresponding WSDL description, the soapAction of soapbind:operation is either not present, or present with an empty string as its value."
So a SOAPAction HTTP header must be present in the request and the SOAPAction HTTP header may be an empty string.
(However I think it is possible not to have SOAPAction HTTP header if the WSA-Addressing is enabled - It does not work on the BC SOAP component)
Currently,
the version 4.0.4 of the BC SOAP component
- gets the SOAP action from the HTTP header (the SOAP action can be an empty string)
- retrieve the operation in the WSDL thanks to the SOAP action (it takes the first operation found in the WSDL even if finds several operations)
the version 4.1-SNAPSHOT of the BC SOAP component
- gets the SOAP action from the HTTP header (the SOAP action can be an empty string)
- retrieve the operation in the WSDL thanks to the SOAP action (it does not take an operation if several operations are found)
- if it does not find an operation and only one operation, it looks the first child of the SOAP body (for interoperability but it is not correct)
Wrong.Read the extract into this Jira, or test with the wsdl provided or test with any document multi operations wsdl, and you will see that you always "find" an operation : the first of the wsdl.