Я пишу веб-сервис, использующий NuSOAP на PHP.Чтобы проверить это, я написал и сервер, и клиент.На стороне сервера я регистрирую функцию следующим образом:
$server->register(
"testFunction",
array("param1" => "xsd:string", "param2" => "xsd:string"),
array("result" => "xsd:string"),
"http://localhost/testApp"
);
А на клиенте выглядит так:
<code>require_once("./lib/nusoap.php");
$client = new soapclient("http://localhost/testApp/server.php");
$function = $_GET["function"];
unset($_GET["function"]);
$result = $client->call($function, $_GET);
echo "<pre>". print_r($result, true) ."
";
Когда я ее вызываюкак и
http://localhost/testApp/client.php?function=testFunction¶m1=value1¶m2=value2
, он работает нормально, но если я переключаю param1 и param2 и говорю
http://localhost/testApp/client.php?function=testFunction¶m2=value2¶m1=value1
, тогда param1 получает значение value2
, а param2 получает значение value1
.очевидно, это просто идет по порядку параметров, а не по именам.
Я подумал, что, поскольку я зарегистрировал функцию с конкретными именами параметров, а затем вызвал функцию, указав эти имена параметров, они будут назначенысоответственно.
Я что-то упустил? Какой смысл указывать имена параметров, если они будут просто выброшены и назначены в том порядке, в котором вы их ввели? Есть ли способ сделать так, чтобы я мог ввестипараметры в любом порядке и правильно ли они отображаются?