1
我正在PHP中使用NuSOAP编写Web服务。为了测试它,我写了一个服务器和一个客户端。在服务器端,我注册的功能,像这样:NuSOAP - 函数参数映射不正确
$server->register(
"testFunction",
array("param1" => "xsd:string", "param2" => "xsd:string"),
array("result" => "xsd:string"),
"http://localhost/testApp"
);
和客户端上看起来是这样的:
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) ."</pre>";
当我这样称呼它
http://localhost/testApp/client.php?function=testFunction¶m1=value1¶m2=value2
它工作正常,但如果我切换参数1和参数2并说
http://localhost/testApp/client.php?function=testFunction¶m2=value2¶m1=value1
然后param1获取值value2
和param2获取值value1
。很显然,它只是按照参数的顺序,而不是名称。
我想,因为我注册了具有特定参数名称的函数,然后调用该函数,指定这些参数名称,他们将相应地分配。
我错过了什么吗?指定参数名称的意义在于,只要按照输入的顺序将其抛出并分配,有没有一种方法可以让我可以按任何顺序输入参数并让它们正确映射?
不是一个坏主意,但它需要多一点对我来说。可以调用很多函数,不同顺序的参数不同,所以我必须做一些switch语句,并为每个函数设置默认参数。另外,我写的客户端仅用于我自己的测试。我不会为我们的客户提供任何客户,因为我认为这几乎违背了使用SOAP的目的。他们需要编写自己的客户端来使用Web服务。 – Travesty3