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