您的位置:首页 > 其它

初学soap(无wsdl)

2010-07-23 16:22 330 查看
2010-04-21 18:28
参考资料:

1.http://a138s.blog.163.com/blog/static/31474077201012494124536/

2个例子,第二个例子说明可以设置一个类的所有public方法供客户端调用!

2.http://blog.csdn.net/lyjtynet/archive/2008/11/04/3211741.aspx

对理论阐述清楚!本文也是按照他写的改改!还有些不明白的问题,若有大侠知之,告诉小弟!

==============================================================================

昨天学习了xmlrpc,是学zendframework一个例子时里面写的,还结合了smarty,理解了很长时间,调了很长时间才调好,有时间整理一下zendframework的资料吧,明天把xmlrpc弄个例子记这,东西忘得太快了!学东西不容易,忘东西快!


这东西就是调用远程文件的方法,按我个人想,

==============================================================================

目录结构:

c:/php (localhost)

----soap

----server-----server2.php

----client ------client2.php

server2.php:

<?php
/*无wsdl*/

function greet($param) {
$retval = 'Hello , '.$param;

//这样包装信息,看起来似乎是value,key的形式,但是返回接收后也可以echo出来
return new SoapParam($retval, 'greetReturn');//或者直接
//return $retval;
}

function greet2($param) {
$retval = 'nihao , '.$param;

//这样包装信息,看起来似乎是value,key的形式,但是返回接收后也可以echo出来
return new SoapParam($retval, 'greetReturn');//或者直接
//return $retval;
}

class myclass{
public function makelove($mm){ //方法名要用public修饰才可以被调用到
$msg="I want to love ".$mm;
return new SoapParam($msg, 'msg');//或者直接
//return $msg;
}
}

//new 一个server实例
$server = new SoapServer(null, array('uri' => 'http://localhost/soap/server'));

//添加一个作为Web Services操作(operation)的函数
$server->addFunction('greet');//33
$server->addFunction('greet2');//34
//$server->setClass('myclass');//35
//设置一个类里面所有的public方法都可以被客户端调用,即作为Web Services操作(operation)的函数
//好像有setClass('')的操作,其他的$server->addFunction('');就失效,不知道为什么,请高人指点一二

//$soap->addFunction(SOAP_FUNCTIONS_ALL);
//加上后报错[Client] looks like we got no XML document in .....,高人路过请指点

//指示Web Service脚本开始处理进入的请求
$server->handle();
?>

client2.php:

<?php
/*无wsdl*/
try {
$client = new SoapClient(null,array('location' => 'http://localhost/soap/server/server2.php','uri' => 'http://localhost/soap/server'));

//echo $result = $client->__soapCall('greet', array(new SoapParam('chenlong', 'name'))); //或者直接
echo $client->greet("chenlong");//8

echo '<br>';
echo $client->greet2("chenlong2");//11

//echo $getmsg=$client->__soapCall('makelove', array(new SoapParam('my wife', 'name'))); //或者直接
//echo $client->makelove("my wife");//15
} catch (Exception $e)
{
printf("Message = %s/n",$e->__toString());
}
?>
访问: http://localhost/soap/client/client2.php

输出:

Hello , chenlong
nihao , chenlong2

注释server2.php里 33 ,34 ,放开35

注释client2.php里8,11,放开15

输出:

I want to love my wife

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: