1

I have created 3 services that were generated by using the gSoap functionality located here: http://www.cs.fsu.edu/~engelen/soap.html

The SOAP server was written in "C" (and the GSoap Framework mentioned above). There is a PHP client that is using these services. The problem is that 2 of the services work from PHP client, one does not. When executing the PHP client code (see below), I get the error message:

ERROR MESSAGE: looks like we got no XML document

The thing is that all 3 services work fine from the SOAP client testing tool : http://www.soapclient.com/soaptest.html

To remove any problems associated with caching, I did the following based on the links below:

FROM:http://stackoverflow.com/questions/14374500/soap-wsdl-cache-enabled
FROM:http://stackoverflow.com/questions/8354785/uncaught-soapfault-exception-client-function-is-not-a-valid-method-for-this-s

Changes in the file php.ini:
soap.wsdl_cache_enabled=0
soap.wsdl_cache_ttl=0

I have attached the WSDL below for further inspection.

What is the problem?

Thanks!

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="conmony"
 targetNamespace="urn:monyServer"
 xmlns:tns="urn:monyServer"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:am="urn:conmony"
 xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:HTTP="http://schemas.xmlsoap.org/wsdl/http/"
 xmlns:MIME="http://schemas.xmlsoap.org/wsdl/mime/"
 xmlns:DIME="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/"
 xmlns:WSDL="http://schemas.xmlsoap.org/wsdl/"
 xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>

 <schema targetNamespace="urn:conmony"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:am="urn:conmony"
  xmlns="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified">
  <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  <complexType name="struct-DBTENANTRET"><!-- am__struct_DBTENANTRET -->
   <sequence>
     <element name="Logon" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTRET::Logon -->
     <element name="Password" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTRET::Password -->
     <element name="TenantID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTRET::TenantID -->
     <element name="LogonUserID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTRET::LogonUserID -->
     <element name="ReturnCode" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTRET::ReturnCode -->
     <element name="KeyID" type="xsd:double" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTRET::KeyID -->
     <element name="Message" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTRET::Message -->
   </sequence>
  </complexType>
  <complexType name="TENANTRETItems"><!-- am__TENANTRETItems -->
   <sequence>
    <element name="item" type="am:struct-DBTENANTRET" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
   </sequence>
  </complexType>
  <complexType name="struct-DBKEYTENANTRET"><!-- am__struct_DBKEYTENANTRET -->
   <sequence>
     <element name="Logon" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBKEYTENANTRET::Logon -->
     <element name="Password" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBKEYTENANTRET::Password -->
     <element name="TenantID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBKEYTENANTRET::TenantID -->
     <element name="LogonUserID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBKEYTENANTRET::LogonUserID -->
     <element name="ReturnCode" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBKEYTENANTRET::ReturnCode -->
     <element name="KeyID" type="xsd:double" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBKEYTENANTRET::KeyID -->
     <element name="Message" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBKEYTENANTRET::Message -->
   </sequence>
  </complexType>
  <complexType name="KEYTENANTRETItems"><!-- am__KEYTENANTRETItems -->
   <sequence>
    <element name="item" type="am:struct-DBKEYTENANTRET" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
   </sequence>
  </complexType>
  <complexType name="struct-DBTENANTGET"><!-- am__struct_DBTENANTGET -->
   <sequence>
     <element name="outTENATID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::outTENATID -->
     <element name="outLogonUserID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::outLogonUserID -->
     <element name="outLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outLogonID -->
     <element name="outSetPassword" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outSetPassword -->
     <element name="outRespGender" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::outRespGender -->
     <element name="outRespFirstName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outRespFirstName -->
     <element name="outRespLastName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outRespLastName -->
     <element name="outRespEMail" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outRespEMail -->
     <element name="outRespPhoneNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outRespPhoneNo -->
     <element name="outTaxEINNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outTaxEINNo -->
     <element name="outCompanyName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outCompanyName -->
     <element name="outABANumber" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outABANumber -->
     <element name="outEMailInvoice" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outEMailInvoice -->
     <element name="outWordpressAuthID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::outWordpressAuthID -->
     <element name="outWebsiteAddress" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::outWebsiteAddress -->
     <element name="ReturnCode" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::ReturnCode -->
     <element name="KeyID" type="xsd:double" minOccurs="1" maxOccurs="1"/><!-- am__struct_DBTENANTGET::KeyID -->
     <element name="Message" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__struct_DBTENANTGET::Message -->
   </sequence>
  </complexType>
  <complexType name="TENANTGETItems"><!-- am__TENANTGETItems -->
   <sequence>
    <element name="item" type="am:struct-DBTENANTGET" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
   </sequence>
  </complexType>
  <!-- operation request element -->
  <element name="tenantGet">
   <complexType>
    <sequence>
     <element name="inLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantGet::inLogonID -->
     <element name="incallhost" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantGet::incallhost -->
     <element name="incallpid" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantGet::incallpid -->
     <element name="incallfilename" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantGet::incallfilename -->
     <element name="incallfileno" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantGet::incallfileno -->
    </sequence>
   </complexType>
  </element>
  <!-- operation response element -->
  <element name="tenantGetResponse">
   <complexType>
    <sequence>
     <element name="DBGetListing" type="am:TENANTGETItems" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantGet::DBGetListing -->
    </sequence>
   </complexType>
  </element>
  <!-- operation request element -->
  <element name="tenantCreate">
   <complexType>
    <sequence>
     <element name="inLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inLogonID -->
     <element name="inSetPassword" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inSetPassword -->
     <element name="inRespGender" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::inRespGender -->
     <element name="inRespFirstName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inRespFirstName -->
     <element name="inRespLastName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inRespLastName -->
     <element name="inRespEMail" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inRespEMail -->
     <element name="inRespPhoneNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inRespPhoneNo -->
     <element name="inTaxEINNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inTaxEINNo -->
     <element name="inCompanyName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inCompanyName -->
     <element name="inABANumber" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inABANumber -->
     <element name="inEMailInvoice" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inEMailInvoice -->
     <element name="inWordpressAuthID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::inWordpressAuthID -->
     <element name="inWebsiteAddress" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::inWebsiteAddress -->
     <element name="inCreateUserID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::inCreateUserID -->
     <element name="inCreateGroupID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::inCreateGroupID -->
     <element name="incallhost" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::incallhost -->
     <element name="incallpid" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::incallpid -->
     <element name="incallfilename" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::incallfilename -->
     <element name="incallfileno" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantCreate::incallfileno -->
    </sequence>
   </complexType>
  </element>
  <!-- operation response element -->
  <element name="tenantCreateResponse">
   <complexType>
    <sequence>
     <element name="DBListing" type="am:TENANTRETItems" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantCreate::DBListing -->
    </sequence>
   </complexType>
  </element>
  <!-- operation request element -->
  <element name="tenantUpdate">
   <complexType>
    <sequence>
     <element name="finLogonID" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finLogonID -->
     <element name="finSetPassword" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finSetPassword -->
     <element name="finRespGender" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::finRespGender -->
     <element name="finRespFirstName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finRespFirstName -->
     <element name="finRespLastName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finRespLastName -->
     <element name="finRespEMail" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finRespEMail -->
     <element name="finRespPhoneNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finRespPhoneNo -->
     <element name="finTaxEINNo" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finTaxEINNo -->
     <element name="finCompanyName" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finCompanyName -->
     <element name="finABANumber" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finABANumber -->
     <element name="finEMailInvoice" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finEMailInvoice -->
     <element name="finWordpressAuthID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::finWordpressAuthID -->
     <element name="finWebsiteAddress" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::finWebsiteAddress -->
     <element name="finCreateUserID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::finCreateUserID -->
     <element name="finCreateGroupID" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::finCreateGroupID -->
     <element name="fincallhost" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::fincallhost -->
     <element name="fincallpid" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::fincallpid -->
     <element name="fincallfilename" type="xsd:string" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::fincallfilename -->
     <element name="fincallfileno" type="xsd:int" minOccurs="1" maxOccurs="1"/><!-- am__tenantUpdate::fincallfileno -->
    </sequence>
   </complexType>
  </element>
  <!-- operation response element -->
  <element name="tenantUpdateResponse">
   <complexType>
    <sequence>
     <element name="DBListing" type="am:TENANTRETItems" minOccurs="0" maxOccurs="1" nillable="true"/><!-- am__tenantUpdate::DBListing -->
    </sequence>
   </complexType>
  </element>
 </schema>
</types>

<message name="tenantGetRequest">
 <part name="Body" element="am:tenantGet"/><!-- am__tenantGet::am__tenantGet -->
</message>

<message name="tenantGetResponse">
 <part name="Body" element="am:tenantGetResponse"/>
</message>

<message name="tenantCreateRequest">
 <part name="Body" element="am:tenantCreate"/><!-- am__tenantCreate::am__tenantCreate -->
</message>

<message name="tenantCreateResponse">
 <part name="Body" element="am:tenantCreateResponse"/>
</message>

<message name="tenantUpdateRequest">
 <part name="Body" element="am:tenantUpdate"/><!-- am__tenantUpdate::am__tenantUpdate -->
</message>

<message name="tenantUpdateResponse">
 <part name="Body" element="am:tenantUpdateResponse"/>
</message>

<portType name="conmonyPortType">
 <operation name="tenantGet">
  <documentation>Service definition of function am__tenantGet</documentation>
  <input message="tns:tenantGetRequest"/>
  <output message="tns:tenantGetResponse"/>
 </operation>
 <operation name="tenantCreate">
  <documentation>Service definition of function am__tenantCreate</documentation>
  <input message="tns:tenantCreateRequest"/>
  <output message="tns:tenantCreateResponse"/>
 </operation>
 <operation name="tenantUpdate">
  <documentation>Service definition of function am__tenantUpdate</documentation>
  <input message="tns:tenantUpdateRequest"/>
  <output message="tns:tenantUpdateResponse"/>
 </operation>
</portType>
<binding name="conmony" type="tns:conmonyPortType">
 <SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
 <operation name="tenantGet">
  <SOAP:operation soapAction=""/>
  <input>
     <SOAP:body parts="Body" use="literal"/>
  </input>
  <output>
     <SOAP:body parts="Body" use="literal"/>
  </output>
 </operation>
 <operation name="tenantCreate">
  <SOAP:operation soapAction=""/>
  <input>
     <SOAP:body parts="Body" use="literal"/>
  </input>
  <output>
     <SOAP:body parts="Body" use="literal"/>
  </output>
 </operation>
 <operation name="tenantUpdate">
  <SOAP:operation soapAction=""/>
  <input>
     <SOAP:body parts="Body" use="literal"/>
  </input>
  <output>
     <SOAP:body parts="Body" use="literal"/>
  </output>
 </operation>
</binding>

<service name="conmony">
 <documentation>gSOAP 2.8.26 generated service definition</documentation>
 <port name="conmony" binding="tns:conmony">
  <SOAP:address location="http://100.48.227.50:8080"/>
 </port>
</service>

</definitions>
Casey Harrils
  • 2,793
  • 12
  • 52
  • 93
  • We are not here to debug your program. Find out what the differences are between the cases that work and the ones that don't. – Bob Dalgleish Dec 14 '15 at 12:59
  • Hi - the 3 services run with no issue using the soap **client** testing tool. When running from PHP, 1 works all of the time, the second runs (but you can't change anything) and the third does not run at all (since the client code does not see it). – Casey Harrils Dec 15 '15 at 17:59
  • Hi - the 3 services run with no issue using the **SOAP Testing tool client**. When running from **PHP client**, 1 works all of the time (am__tenantCreate), the second (am__tenantGet) runs (but you can't make changes to the input or output fields because the **PHP client** does not see the changes) and the third (am__tenantUpdate) does not work at all because the **PHP client** does not see it all. Again, all 3 have ran - with no issue - using the **SOAP Testing Tool client** Do you have any ideas as to why this is the case? Thanks! – Casey Harrils Dec 15 '15 at 18:07
  • Hi again - made a mistake. The part "third (am__tenantUpdate) does not work at all because the PHP client does not see it all" is not true. It used to be though. Then, I followed the links above to make sure the **PHP client** did not cache. AFTERWARDS, I got the error stating "looks like we got no XML document. I thought there was a problem with the WSDL that I was not seeing. It was generated by the program located here: http://www.cs.fsu.edu/~engelen/soap.html Thanks! – Casey Harrils Dec 15 '15 at 18:22

0 Answers0