123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- --TEST--
- Bug #30045 (Cannot pass big integers (> 2147483647) in SOAP requests)
- --EXTENSIONS--
- soap
- simplexml
- --INI--
- soap.wsdl_cache_enabled=1
- --FILE--
- <?php
- function foo($type, $num) {
- return new SoapVar($num, $type);
- }
- class LocalSoapClient extends SoapClient {
- function __construct($wsdl, $options) {
- parent::__construct($wsdl, $options);
- $this->server = new SoapServer($wsdl, $options);
- $this->server->addFunction('foo');
- }
- function __doRequest($request, $location, $action, $version, $one_way = 0): ?string {
- $xml = simplexml_load_string($request);
- echo $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Body->children("http://test-uri")->children()->param1->asXML(),"\n";
- unset($xml);
- ob_start();
- $this->server->handle($request);
- $response = ob_get_contents();
- ob_end_clean();
- return $response;
- }
- }
- $soap = new LocalSoapClient(NULL, array("uri"=>"http://test-uri", "location"=>"test://"));
- function test($type, $num) {
- global $soap;
- try {
- printf(" %0.0f\n ", $num);
- $ret = $soap->foo($type, new SoapVar($num, $type));
- printf(" %0.0f\n", $ret);
- } catch (SoapFault $ex) {
- var_dump($ex);
- }
- }
- /*
- echo "byte\n";
- //test(XSD_BYTE, -129);
- test(XSD_BYTE, -128);
- test(XSD_BYTE, 127);
- //test(XSD_BYTE, 128);
- echo "\nshort\n";
- //test(XSD_SHORT, -32769);
- test(XSD_SHORT, -32768);
- test(XSD_SHORT, 32767);
- //test(XSD_SHORT, 32768);
- echo "\nint\n";
- //test(XSD_INT, -2147483649);
- test(XSD_INT, -2147483648);
- test(XSD_INT, 2147483647);
- //test(XSD_INT, 2147483648);
- echo "\nlong\n";
- //test(XSD_LONG, -9223372036854775809);
- test(XSD_LONG, -9223372036854775808);
- test(XSD_LONG, 9223372036854775807);
- //test(XSD_LONG, 9223372036854775808);
- echo "\nunsignedByte\n";
- //test(XSD_UNSIGNEDBYTE, -1);
- test(XSD_UNSIGNEDBYTE, 0);
- test(XSD_UNSIGNEDBYTE, 255);
- //test(XSD_UNSIGNEDBYTE, 256);
- echo "\nunsignedShort\n";
- //test(XSD_UNSIGNEDSHORT, -1);
- test(XSD_UNSIGNEDSHORT, 0);
- test(XSD_UNSIGNEDSHORT, 65535);
- //test(XSD_UNSIGNEDSHORT, 65536);
- echo "\nunsignedInt\n";
- //test(XSD_UNSIGNEDINT, -1);
- test(XSD_UNSIGNEDINT, 0);
- test(XSD_UNSIGNEDINT, 4294967295);
- //test(XSD_UNSIGNEDINT, 4294967296);
- echo "\nunsignedLong\n";
- //test(XSD_UNSIGNEDLONG, -1);
- test(XSD_UNSIGNEDLONG, 0);
- test(XSD_UNSIGNEDLONG, 18446744073709551615);
- //test(XSD_UNSIGNEDLONG, 18446744073709551616);
- echo "\nnegativeInteger\n";
- test(XSD_NEGATIVEINTEGER, -18446744073709551616);
- test(XSD_NEGATIVEINTEGER, -1);
- //test(XSD_NEGATIVEINTEGER, 0);
- echo "\nnonPositiveInteger\n";
- test(XSD_NONPOSITIVEINTEGER, -18446744073709551616);
- test(XSD_NONPOSITIVEINTEGER, 0);
- //test(XSD_NONPOSITIVEINTEGER, 1);
- echo "\nnonNegativeInteger\n";
- //test(XSD_NONNEGATIVEINTEGER, -1);
- test(XSD_NONNEGATIVEINTEGER, 0);
- test(XSD_NONNEGATIVEINTEGER, 18446744073709551616);
- echo "\nPositiveInteger\n";
- //test(XSD_POSITIVEINTEGER, 0);
- test(XSD_POSITIVEINTEGER, 1);
- test(XSD_POSITIVEINTEGER, 18446744073709551616);
- echo "\ninteger\n";
- test(XSD_INTEGER, -18446744073709551616);
- test(XSD_INTEGER, 18446744073709551616);
- */
- echo "long\n";
- test(XSD_LONG, 2147483647);
- test(XSD_LONG, 2147483648);
- test(XSD_LONG, 4294967296);
- test(XSD_LONG, 8589934592);
- test(XSD_LONG, 17179869184);
- echo "\nunsignedLong\n";
- test(XSD_UNSIGNEDLONG, 2147483647);
- test(XSD_UNSIGNEDLONG, 2147483648);
- test(XSD_UNSIGNEDLONG, 4294967296);
- test(XSD_UNSIGNEDLONG, 8589934592);
- test(XSD_UNSIGNEDLONG, 17179869184);
- ?>
- --EXPECT--
- long
- 2147483647
- <param1 xsi:type="xsd:long">2147483647</param1>
- 2147483647
- 2147483648
- <param1 xsi:type="xsd:long">2147483648</param1>
- 2147483648
- 4294967296
- <param1 xsi:type="xsd:long">4294967296</param1>
- 4294967296
- 8589934592
- <param1 xsi:type="xsd:long">8589934592</param1>
- 8589934592
- 17179869184
- <param1 xsi:type="xsd:long">17179869184</param1>
- 17179869184
- unsignedLong
- 2147483647
- <param1 xsi:type="xsd:unsignedLong">2147483647</param1>
- 2147483647
- 2147483648
- <param1 xsi:type="xsd:unsignedLong">2147483648</param1>
- 2147483648
- 4294967296
- <param1 xsi:type="xsd:unsignedLong">4294967296</param1>
- 4294967296
- 8589934592
- <param1 xsi:type="xsd:unsignedLong">8589934592</param1>
- 8589934592
- 17179869184
- <param1 xsi:type="xsd:unsignedLong">17179869184</param1>
- 17179869184
|