PHP简单SOAP应用

注意:要应用PHP的SOAP服务,需要开启SOAP扩展功能
一、服务器端
PHP的soap服务在服务器端添加端口可以采用传统函数、类和对象三种:
1) 传统函数

 1 function soap_echo($echo) {
2   return 'ECHO: '.$echo;
3 }
4 class xxx {
5   function soap_server() {
6     $server = new SoapServer(null, array('uri' => 'http://xxxx')); // uri是为了定义SOAP名字空间,依据情况可随意定义
7     $server->addFunction('soap_echo'); // 添加服务端口,导入两个函数用数组array('func1','func2');导入所有函数用常量SOAP_FUNCTIONS_ALL
8     $server->handle(); // 处理soap请求
9   }
10 }


2) 类

 1 class xxx {
2   function soap_echo($echo) {
3     return 'ECHO: '.$echo;
4   }
5   function soap_server() {
6     $server = new SoapServer(null, array('uri' => 'http://xxxx'));
7     $server->setClass(get_class($this)); // 将类公开成员全部添加为服务端口,这里就用本类
8     $server->handle();
9   }
10 }


3) 对象
对象跟类的实现类似,这里就不写了

二、客户端

 1 class zzz {
2   function test_soap() {
3     $opt = array(
4       'location' => 'http://..../index.php?c=xxx&m=soap_server', // SOAP服务端的URL
5       'uri' => 'http://xxxx' // 命名空间要跟SOAP服务端保持一致
6     );
7     $client = new SoapClient(null, $opt);
8     $ret = $client->soap_echo('it is a test'); // 这是缩写形式,完整的是:$client->__soapCall('soap_echo', array('it is a test'))
9     exit($ret);
10   }
11 }

 

这里是以字符串作为参数的,用数组也是一样的,soap_echo得到的也将是数组

同时,soap_echo返回的也可以是数组,这样客户端得到的也将是一个数组

posted on 2011-11-14 10:17  张仪挂刀  阅读(508)  评论(0编辑  收藏  举报

导航