I'm using Axis 1.4 in Tomcat 5.0.28 on Java 1.4.2_11-b06 as the server, and gSOAP 2.7.0f as the C++ client.

Using HTTP, everything works fine.  Using HTTPS, certain SOAP responses cause gSOAP to emit the error message "Soap fault: SOAP version mismatch or invalid SOAP message".  I was using Axis 1.1 previously, and did not have this problem.  Axis 1.2, 1.3, and 1.4 cause gSOAP to give the error, only in HTTPS.

Here's where it gets interesting.  I set up basic SOAP logging by putting a handler into the response flow, which takes the MessageContext and calls mc.getResponseMessage().getSOAPPartAsString() and dumps the output to file.

This causes the problem to go away!

It wasn't clear to me whether this was an Axis bug or gSOAP's fault until calling getSOAPPartAsString() caused the result of the operation to change.  Getters shouldn't affect change.

I want to get some feedback from the Dev mailing list before I log this as a bug.

My apologies, but I can't provide code snippet.
Here's what the very simple XML looks like when it works:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:Task.CountResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://www.mycompany.com/schemas"><Count xsi:type="xsd:int">0</Count></ns1:Task.CountResponse></soapenv:Body></soapenv:Envelope>

I can't see what it looks like when it fails, because it doesn't fail if I log it.  I'm trying to setup a trace on the client side.

Reply via email to