PHP SOAP, ADODB, MySQL and BigInt problem

From: Date: Tue, 29 Jul 2008 22:33:59 +0000
Subject: PHP SOAP, ADODB, MySQL and BigInt problem
Groups: php.soap 
Request: Send a blank email to php-soap+get-2832@lists.php.net to get a copy of this message
I have bigints in my MySQL DB (full international-style phone numbers, such as 12125004000). I want to return these via a SOAP API I'm working on. My public soap API PHP file is just this:
    require 'api_pub_soap.class.inc';
    $server = new SoapServer("pubapi.wsdl");
    $server->setClass('pubapisoap');
    $server->handle();
Class pubapisoap extends my pubapi class, so that I can do REST or other methods for accessing and responding to API requests. It seems that even if I specify xsd:string in the WSDL for the response, the item is somehow strongly typed by SOMETHING. Maybe SOAP, maybe ADODB, but I'm not sure how to untype it. I love how simple my API implementation is, and I don't want to get it all complex by skipping the setClass piece and have to redo everything. I've even tried to typecast those two fields back to a string before returning the values in the base class, but with no luck. What am I doing wrong? Here's the request and response:
    <SOAP-ENV:Body>
        <m:extensionGet xmlns:m="pubapi.wsdl">
            <apikey xsi:type="xsd:string">md5hash</apikey>
            <extensionid xsi:type="xsd:int">1</extensionid>
            <did xsi:type="xsd:string"></did>
            <extension xsi:type="xsd:int"></extension>
        </m:extensionGet>
    </SOAP-ENV:Body>
    <SOAP-ENV:Body>
        <ns1:extensionGetResponse xmlns:ns2="pubapi.wsdl" xmlns:ns1="">
            <extensionList SOAP-ENC:arrayType="ns2:Extension[1]" xsi:type="ns2:ExtensionArray">
                <item xsi:type="ns2:Extension">
                    <extensionid xsi:type="xsd:int">1</extensionid>
                    <did xsi:type="xsd:int">2147483647</did>
                    <forward xsi:type="xsd:int">2147483647</forward>
                    <added xsi:type="xsd:int">1136219788</added>
                    <startdate xsi:type="xsd:int">1136219788</startdate>
                    <enddate xsi:type="xsd:int">1151501937</enddate>
                    <alias xsi:type="xsd:string"></alias>
                    <extension xsi:type="xsd:int">0</extension>
                    <extensionLength xsi:type="xsd:int">0</extensionLength>
                </item>
            </extensionList>
        </ns1:extensionGetResponse>
    </SOAP-ENV:Body>
The WSDL relevant:
    <xsd:complexType name="Extension">
        <xsd:all>
            <xsd:element name="extensionid" type="xsd:int"/>
            <xsd:element name="did" type="xsd:string"/>
            <xsd:element name="forward" type="xsd:string" />
            <xsd:element name="added" type="xsd:int" />
            <xsd:element name="startdate" type="xsd:int" />
            <xsd:element name="enddate" type="xsd:int" />
            <xsd:element name="alias" type="xsd:string" />
            <xsd:element name="extension" type="xsd:int" />
            <xsd:element name="extensionLength" type="xsd:int" />
        </xsd:all>
    </xsd:complexType>
    <xsd:complexType name="ExtensionArray">
        <xsd:complexContent>
            <xsd:restriction base="SOAP-ENC:Array">
                <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:Extension[]"/>
            </xsd:restriction>
        </xsd:complexContent>
    </xsd:complexType>
    <message name="extensionGetRequest">
        <part name="apikey" type="xsd:string" />
        <part name="extensionid" type="xsd:int" />
        <part name="did" type="xsd:string" />
        <part name="extension" type="xsd:int" />
    </message>
    <message name="extensionGetResponse">
        <part name="extensionList" type="tns:ExtensionArray" />
    </message>
---------------------------------------------------------------------------
Peter Beckman                                                  Internet Guy
beckman@angryox.com                                 http://www.angryox.com/
---------------------------------------------------------------------------

« previous php.soap (#2832) next »