用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。怎么样才能让它正常显示呢?请高人指点。
...全文
139 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qngzh 2008-10-06
  • 打赏
  • 举报
回复
接分喽
karlo 2008-10-06
  • 打赏
  • 举报
回复
经过本人多次测试,采用排除法跟最小系统法得到结论,因为原来我以前用的NUSOAP版本跟我客户端的版不一致,所以导致出现问题。将最新的NUSOAP的库覆盖原来的版即可解决问题。

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧