--TEST--
Bug #30045 (Cannot pass big integers (> 2147483647) in SOAP requests)
--SKIPIF--
--INI--
soap.wsdl_cache_enabled=1
--FILE--
server = new SoapServer($wsdl, $options);
$this->server->addFunction('foo');
}
function __doRequest($request, $location, $action, $version, $one_way = 0) {
$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
2147483647
2147483647
2147483648
2147483648
2147483648
4294967296
4294967296
4294967296
8589934592
8589934592
8589934592
17179869184
17179869184
17179869184
unsignedLong
2147483647
2147483647
2147483647
2147483648
2147483648
2147483648
4294967296
4294967296
4294967296
8589934592
8589934592
8589934592
17179869184
17179869184
17179869184