SOAP guide
SOAPAction in SOAP 1.1 vs SOAP 1.2
Put the action value in the correct HTTP location for each SOAP version and debug dispatch failures without changing a valid envelope blindly.
7 min read · Updated 2026-08-21
The short answer
SOAP 1.1 carries the action intent in the separate SOAPAction HTTP header and normally sends the envelope as text/xml. SOAP 1.2 uses the optional action parameter on application/soap+xml instead. Match the envelope namespace, media type, action location, and exact operation value to the service contract; moving only the XML body does not convert versions.Send the action in the version-specific location
The action is transport metadata used for intent, routing, or dispatch. It is not inferred reliably from the first Body child, and the same URI may appear in WSDL or service configuration without being written inside the envelope.
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:example:GetOrder"Content-Type: application/soap+xml; charset=utf-8; action="urn:example:GetOrder"Copy the operation value exactly from the contract
Action values are URI identifiers and need not resolve in a browser. Treat letter case, punctuation, version segments, and trailing separators as significant, and do not derive a value by guessing from the operation's element name.
- Inspect the WSDL binding or service documentation for the operation.
- Compare the raw outbound headers after framework and proxy rewriting.
- Keep quotes and parameter syntax appropriate to the HTTP library in use.
- Do not use action metadata as an authorization decision by itself.
Debug transport and envelope as one versioned request
A server may reject a request before parsing the Body when its media type or action is wrong. Capture a known-good request, compare headers and envelope namespace together, then change one versioned layer at a time.
SOAP 1.2 defines the action parameter as optional at the protocol level, but a specific binding or service contract can still expect a value for dispatch. Follow that contract without adding the SOAP 1.1 header to a SOAP 1.2 request by habit.
Prove the fix
- Review the version differencesMatch namespace, media type, action, and fault structure as one request.
- Compare two request envelopesIsolate structural XML changes after checking HTTP headers separately.
- Inspect SOAP structureTrace Envelope, Header, Body, Fault, and application detail.
Related guides
- SOAP 1.1 vs SOAP 1.2Identify the SOAP version from its envelope namespace, align the HTTP media type and action, and avoid mixing incompatible fault structures.
- How to debug a SOAP FaultRead the standard fault fields before application detail, preserve the HTTP response, and reduce a failing SOAP request without losing context.
- XML namespace prefix vs URIUnderstand why prefixes are replaceable aliases, why namespace URIs are compared literally, and how expanded names keep documents interoperable.
Get started
Bring order to the XML your team can't afford to ignore.
Create a free account and get a private workspace to search, validate, diff, and monitor your XML feeds, sitemaps, schemas, and vendor integrations.