2010/1/27 Bruce Bailey <bruce1828@hotmail.com>: > > Paweł > > This seems like a potentially useful workaround (like your strings suggestion). I would expect for SoapServer to either work as expected or have its limitations documented, with suggested workarounds. > > In any case, I really appreciate the help. > > Regards, > > Bruce > >> Date: Wed, 27 Jan 2010 19:34:21 +0100 >> From: bkrupa@proton.eu.org >> To: bruce1828@hotmail.com >> Subject: Re: SoapServer and integer types question >> >> the other solution is to divide one huge integer into two ones. >> X=2^32*A+B >> in this way you can pass 64 bit integer using two 32 bit ones. >> >> The real problem is not in soap server or client as you may >> easily pass strings instead of integers, but in >> managing huge integers in your code. >> >> You can use GMP for integers of any length arithmetics. >> >> take care, >> >> pk >> >> >> Bruce Bailey pisze: >> > Thanks all for your replies. According to my limited understanding of schemas, xs:long types would need 64 bits to represent. However, SoapServer doesn't seem to recognize that. Wouldn't that be considered a defect? Should I enter a defect here? >> > >> > Thanks, >> > >> > Bruce >> > >> > >> >> Date: Tue, 26 Jan 2010 19:18:09 +0100 >> >> From: bkrupa@proton.eu.org >> >> To: bruce1828@hotmail.com >> >> Subject: Re: SoapServer and integer types question >> >> >> >> just string ;) >> >> >> >> Bruce Bailey pisze: >> >> >> >>> Hi >> >>> >> >>> I'm using the SoapServer class (in PHP5.2.3) and noticing what seems like incorrect behavior. >> >>> >> >>> When I have 10 digit (or greater) integer values returned from the SoapServer, they seem to overflow. >> >>> >> >>> For example: >> >>> >> >>> Schema type (from WSDL): xs:long (or xs:int or xs:integer) >> >>> Returned value (from network trace): <value>2147483647</value> >> >>> >> >>> Expected value: <value>3605736641</value> >> >>> >> >>> >> >>> Is this correct behavior? >> >>> >> >>> I find that if I use xs:decimal for the type, I get my expected value back from SoapServer, but I'm concerned that there are unexpected consequences waiting for me in the future. >> >>> >> >>> What have other people done in this type of situation? >> >>> >> >>> Thanks in advance, >> >>> >> >>> Bruce >> >>> >> >>> _________________________________________________________________ >> >>> Hotmail: Powerful Free email with security by Microsoft. >> >>> http://clk.atdmt.com/GBL/go/196390710/direct/01/ >> >>> >> >>> >> > >> > _________________________________________________________________ >> > Hotmail: Free, trusted and rich email service. >> > http://clk.atdmt.com/GBL/go/196390708/direct/01/ >> > >> > > _________________________________________________________________ > Hotmail: Trusted email with Microsoft's powerful SPAM protection. > http://clk.atdmt.com/GBL/go/196390706/direct/01/ I think the issue is pretty simple. The maximum value an integer can hold is dependent upon the system architecture. On a 32bit system, the signed value is as you are seeing. On a 64bit system the signed value is 9,223,372,036,854,775,807 (nearly 10^19). I would guess this is pretty standard for any language/os. The BCMath Arbitrary Precision Mathematics extension is also an option for simple maths. -- ----- Richard Quadling "Standing on the shoulders of some very clever giants!" EE : http://www.experts-exchange.com/M_248814.html EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 ZOPA : http://uk.zopa.com/member/RQuadling -- PHP Soap Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php