Zend_XmlRpc 使用实例(轻松实现对外接口)
2014-12-04 11:54
190 查看
Zend_XmlRpc使用实例
转载请注明出处,尊重原创:/article/1807093.html一、Zend_XmlRpc介绍
1. Zend_XmlRpc_Server:
Zend_XmlRpc_Server 依照 » www.xmlrpc.com 上的规格描述 实现了一个全功能 XML-RPC 服务器。同时,它还实现了允许批量传输(boxcarring)的 system.multicall() 方法。
个人理解,Zend_XmlRpc_Server可以在PHP程序中轻松实现webservice接口的功能,所有对外部的接口都可以在server文件中定义(只添加对外开发的接口),保证接口的安全性和程序的安全性。
2. Zend_XmlRpc_Client:
XML-RPC 服务的功能。主要功能包括在 PHP 和 XML-RPC 之间进行类型的自动转换, 服务代理对象(a server proxy object),和访问服务器的自省功能 (introspection capabilities)。
个人理解,就是在其他PHP程序中使用之前程序定义的Zend_XmlRpc_Server里的接口时使用,可以轻松调用Zend_XmlRpc_Server里定义的接口。
二、Zend_XmlRpc使用
首先我们得创建一个sever类,名字自定义。比如:我现在在我的项目zend_fraemwork创建一个Myserver.php文件,如图:
这个Myserver.php文件的位置随便你放,只要是在application下(一般我会创建一个webservice文件夹,上图为测试,所以随便放的)。
Myserver.php文件代码如下:
<?php require_once 'Zend/XmlRpc/Server.php'; require_once APPLICATION_PATH.'\common\sendMail.php';//先引入项目下的一个要开发出来的接口类 $server = new Zend_XmlRpc_Server(); $server->setClass('sendMail','test');//创建一个命名空间为test,然后把sendMail.php的sendMail整个类放入Zend_XmlRpc_Server作为对外的接口 echo $server->handle();//输出处理请求结果 |
看到这里,大家肯定迫不及待想要看看到底如何如其他程序去使用Zend_XmlRpc_Client来调用sendMail.php里的方法了,好的,先看看如何调用吧。
我新建一个项目名称为:zend_fraemwork1,然后在default模块下的IndexController里试试用Zend_XmlRpc_Client来调用了,结构如图:
从图中可以看到,该项目下的common文件夹下根本没有sendMail.php文件。且看我如何调用这个邮件发送类的发送方法。代码如下:
$title="测试"; $body='<h1>这是一封来自MarkTao的测试PHP邮件发送邮件!</h1><a href="#">请确认</a>'; $address = 'xxx@qq.com'; try{ $client = newZend_XmlRpc_Client('http://192.168.1.104/zend_fraemwork/public/common/Myserver.php'); //这是我本机的IP:192.168.1.104,两个项目都在本机的站点下。根据url实例化Zend_XmlRpc_Client对象。 $test = $client->getProxy('test');// getProxy()方法接受一个可选参数作为将要代理的远端服务器的命名空间。如果没有指定这个命名空间,默认的命名空间会被代理 $test->__call(send, array($title, $body, $address));//调用__call方法调用sendMail.php类里的send方法,发送邮件。array是用来传递参数用的。 }catch (Zend_XmlRpc_Client_HttpException $ee){ $ee->getMessage(); } |
三、总结
总结一下:首先,我们得保证两个项目直接是可以通信的,也就是说网络是通的;其次,我们得创建好提供外部统一访问的类,如上述的Myserver.php;然后我们的在该类中通过Zend_XmlRpc_Server对象把需要的类或者方法set或者add进去,这样在其他项目里就能随时使用Zend_XmlRpc_Client对象进行访问了。
特别注意的是:在Myserver.php类里必须引入:
require_once 'Zend/XmlRpc/Server.php';
而在使用Zend_XmlRpc_Client对象的类里也必须使用:
require_once 'Zend/XmlRpc/Client.php';
最后,国际惯例,欢迎拍砖!
相关文章推荐
- “轻松加愉快”地实现并使用IComparer接口
- Android HTTP实例 使用GET方法和POST方法发送请求(通过Apache接口实现)
- “轻松加愉快”地实现并使用IComparer接口
- Spring MVC实例,使用Controller接口实现控制器
- 接口的多态使用; 接口应用实例:U盘、打印机可以使用共同的USB接口,插入到电脑上实现各自的功能。
- 《转》使用httpclient实现http接口调用实例
- Android应用中使用及实现系统“分享”接口实例
- Python 实现的一个使用接口的实例
- [C#]实现IEnumerable接口来使用foreach语句的一个实例
- 使用httpclient实现http接口调用实例
- 使用dubbo对外暴露接口,实现类同时实现两个接口后 @Autowire失败,提示expected single matching bean but found 2解决方案
- 实现Runnable接口的类+使用Thread类的实例来创建线程---->通过实现Runnable接口来创建线程类
- SpringMVC编程使用Controller接口实现控制器实例代码
- 使用httpclient实现http接口调用实例
- 使用httpclient实现http接口调用实例
- 使用httpclient实现http接口调用实例
- “轻松加愉快”地实现并使用IComparer接口
- 微信h5支付统一下单接口,实现用户在h5页面使用微信支付——微信h5支付开发实例7
- 使用jQuery轻松实现Ajax的实例代码