• 2 replies
  • Latest Post - ‏2014-02-25T17:24:01Z by Ricardo Gonzalez
1 Post

Pinned topic Problems to call Web Services with SOAP 1.2 through SOAPRequest [Code]

‏2013-09-23T16:12:48Z | 1.2; soap soaprequest


I'm trying to access a Web Services (WCF) through SOAPRequest node and is generating the Fault Exception "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).".

My Flow is SOAPInput -> Compute Node -> SOAPRequest -> SOAPReply. I'm using Compute node because I put de SOAP version and others attributes in Context.

I think the problem is the SOAP Action, because he did not put in the Content-Type, when I run the SOAP UI works and the only difference seems to be the SOAPAction. Has anyone had this problem?

Information obtained from TCPMon:


POST /Gmi3/EnvioEmailService.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action=""
Content-Length: 1226
Host: hostname:9898
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)


POST /Gmi3/EnvioEmailService.svc HTTP/1.1
Content-Length: 389
Content-Type: application/soap+xml; charset=utf-8
Host: hostname:9898
SOAPAction: ""
Connection: Keep-Alive

The information below (simple sample):

Code - Compute Node



                SET OutputRoot.SOAP.Context.Namespace.(SOAP.NamespaceDecl)xmlns:soap12 = soap;

                SET OutputRoot.SOAP.Context.Namespace.(SOAP.NamespaceDecl)xmlns:tem = tem;

                SET OutputRoot.SOAP.Context.SOAP_Version = '1.2';

                --SET OutputRoot.SOAP.Context."Content-Type" = 'application/soap+xml; charset=utf-8; action="';

                SET OutputRoot.SOAP.Context."Content-Type" = 'application/soap+xml; charset=utf-8';

                SET OutputRoot.SOAP.Body.tem:EnviarEmail.tem:emailDestino = InputRoot.XMLNSC.*.Destino;

                SET OutputRoot.SOAP.Body.tem:EnviarEmail.tem:assuntoEmail = InputRoot.XMLNSC.*.Assunto;

                SET OutputRoot.SOAP.Body.tem:EnviarEmail.tem:corpoMensagem = InputRoot.XMLNSC.*.Mensagem;

                IF InputRoot.XMLNSC.*.Formato = 'HTML' THEN

                                SET OutputRoot.SOAP.Body.tem:EnviarEmail.tem:html = 1;


                                SET OutputRoot.SOAP.Body.tem:EnviarEmail.tem:html = 0;

                END IF;

               RETURN TRUE;



Updated on 2013-09-23T17:34:50Z at 2013-09-23T17:34:50Z by Magnani
  • fjb_saper
    155 Posts

    Re: Problems to call Web Services with SOAP 1.2 through SOAPRequest [Code]


    Look up the documentation for the SOAP node. You may have to specify the SOAP Action in the environmental override. But you are right you have to specify the soap action. You did not specify how the SOAP node was built. Does it reference a deployable wsdl? Does the wsdl have the SOAP action in its bindings?

  • Ricardo Gonzalez
    Ricardo Gonzalez
    1 Post

    Re: Problems to call Web Services with SOAP 1.2 through SOAPRequest [Code]


    Just add the HTTPRequestHeader in the Message Assembly headers and one of the properties is SOAPAction.  HTTPRequestHeader is a sibling of LocalEnvironment.

    I did it in a mapping node, pretty easy.. You should have no problems doing it in the ESQL.