初学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 |
相关文章推荐
- 彻底理解webservice SOAP WSDL
- gSoap工具wsdl2h及soapcpp2指令汇总
- Web服务搜索与执行引擎(七)——重温WSDL与SOAP
- RPC, SOAP, WSDL的关系
- webservice SOAP WSDL
- WebServices/SOAP/WSDL/UDDI
- 使用 WSDL 部署 Web 服务,第 2 部分: 简单对象访问协议(SOAP)
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析)
- cxf WebService设置wsdl中soapAction的值
- 初步理解一下:SOA, SOAP, Web Service, WSDL等
- SOAP和WSDL的一些必要知识 (转)
- SOAP和WSDL的一些必要知识
- soap-ws 获取wsdl中所有方法 (二)
- webService三要素 SOAP、WSDL、UDDI
- 什么是SOAP ,WSDL 和UDDI
- WSDL和SOAP的关系
- faultCode=INVALID_WSDL: Expected element ‘{http://schemas.xmlsoap.org/wsdl/} WSDLExceptionfaultCode=
- Web服务搜索与执行引擎(七)——重温WSDL与SOAP
- Web Service学习笔记(webservice、soap、wsdl、jws详细分析)
- soap 返回简单数据类型 wsdl webservice