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

如何调用soap协议的接口 java php soap调用_数组

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 }

如何调用soap协议的接口 java php soap调用_数组

2) 类

如何调用soap协议的接口 java php soap调用_数组

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 }

如何调用soap协议的接口 java php soap调用_数组

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

二、客户端

如何调用soap协议的接口 java php soap调用_数组

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协议的接口 java php soap调用_数组

 

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

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