Blog Archives

Change or Add SOAPAction Header

It wasn’t the easiest thing to find, so I wanted to link to this page on how to change the SOAPAction header of a message in CXF. This is especially useful if you have a SOAPAction header that is = “” and causing issues when trying to connect to a .NET or WCF server with a Java client. (Keywords galore!)

Here’s the error I was getting:

javax.xml.ws.soap.SOAPFaultException: The message with Action ” cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).

And here’s the easy, one-line solution:

For the most part, you probably don’t even need an interceptor for this. Just
do something like:

((BindingProvider)proxy).getRequestContext().put(
BindingProvider.SOAPACTION_URI_PROPERTY,
“my.soap.action”);

before calling the method. That should do it.

Thanks, Daniel Kulp.

Find me, Google: Empty SOAPAction header