用nusoap远程调用返回值为1
karlo 2008-10-06 03:12:57 因为项目原因,最近要使用NUSOAP来远程调用。花了一些时间学习了NUSOAP之后按例子做了一些练习,当以为一切都没有问题之后转回项目,使用例上可以正常的方法来写程序。后来发现在本地调用正常返回值的代码,换成远程调用之后返回的值都变成了1。在GOOGLE跟BAIDU都找不到解决的方法,更找不到原因,于是来这里求助,希望大侠们能伸出援手,解一解惑。例子代码如下:
soap_server.php
<?php
include_once("nusoap/nusoap.php"); //插入文件
$server=new soap_server(); //生成对象
$server->configureWSDL("test_wsdl", "");
$server->wsdl->schemaTargetNamespace="urn:test_wsdl";
$server->register("hello", //方法名
array(
"name"=>"xsd:string",
"call"=>"xsd:string",
"tele"=>"xsd:string",
),//输入参数
array(
"return"=>"xsd:string",
),//输出参数
"urn:test_wsdl",//名字空间
"urn:test_wsdl#hello",//名字空间#要操作的函数名
"rpc",//style
"encoded",//use
"This is test."//说明
);
//test方法实现
function hello($name,$call,$tele) {
if($name==""){
return new soap_fault("Client","","Must supply a valid name.");
}
return "Hello, " . $name." ".$call." ".$tele;
}
//Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA=isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:"";
$server->service($HTTP_RAW_POST_DATA);
?>
客户端调用代码:soap_client.php
<?php
include_once("nusoap/nusoap.php"); //插入文件
//设置参数数组
$para=array(
"name"=>"sera1ph.Liu",
"call"=>"123456",
"phone"=>"12345678",
);
//生成客户端对象,注意下面的url ?wsdl是必须加的前面为服务端的文件
$client=new soapclient("http://localhost/test/soap_server.php?WSDL");
//呼叫/使用 那个函数,注意名字空间的区分
$return=$client->call('hello',$para,"http://localhost/test/test_wsdl","test_wsdl#hello");
print_r($return);
?>
如果这两个文件放在htdocs的test目录下的话就是正常的,如果客户端放在test,服务端放在soap文件夹下的话就会显示:Hello, 1 1 1。怎么样才能让它正常显示呢?请高人指点。