2 Replies Latest reply on Oct 1, 2009 10:23 AM by jdoyle

    How do I set the HTTP SoapAction header?

    jkranes

      Hi,

      This is a cross-post from TEIID Designer, but I have verified that the exact same behavior occurs when I execute a query against my VDB from a java client using an embedded connection, so I suspect the issue relates to the core TEIID engine and not just the designer UI.

      I am trying to set up my first WSDL-to-relational model using Designer 6.2 and am running into problems with the HTTP SoapAction header.

      Steps taken:

      In a new project, I used the WSDL To Relational Model import wizard. I entered the URL of a public test "calculator" web service, http://www.dneonline.com/calculator.asmx?wsdl. I selected the "Add" operation and imported into a new Source model named "calc".

      The Import wizard created two artifacts, calc.msi and XMLSoapConnectorExtensions.msi. I then created a new Virtual Database, CalcDB, and added my model to it (the XMLSoapConnectorExtension.msi was added automatically.). I then executed the Virtual Database, and created the following SQL statement:

      select aso.addResult from "calcdb"."calc.Calculator.Add.AddSoapOut" as aso, "calcdb"."calc.Calculator.Add.AddSoapIn" as asi where asi.intA = 3 and asi.intB = 5 and aso.responseIn = asi.responseOut;

      When I execute this SQL, my SOAP request is sent to the web service provider. Using a packet inspector, I can see that while the SOAP envelope appears to be correct, a SoapAction HTTP header is sent with a blank value (""). This causes the server to return a SOAP fault. I have verified that the server will accept a request with NO SoapAction header, or it will accept a request with the SoapAction header value "http://tempuri.org/Add", but if an empty string is sent, the service fails.

      I did notice that the System table System.GroupProperties shows a row with the name SoapAction and the correct value ("http://tempuri.org/Add"). However, this value does not appear to be used when constructing the request sent to the server.

      So, in conclusion, what do I need to do to either (a) eliminate the SoapAction header, or (b) make sure it's set to the required value?

      Thanks in advance for any suggestions.

      Jon