原地址:http://doc.zenw.org/developer/ch03s07.html
作者:zenwongSOAP from PHP简单对象访问协议(SOAP,全写为Simple Object Access Protocol)是一种标准化的通讯规范,主要用于Web服务(web service)中。SOAP的出现是为了简化网页服务器(Web Server)在从XML数据库中提取数据时,无需花时间去格式化页面,并能够让不同应用程序之间透过HTTP通讯协定,以XML格式互相交换彼此的数据,使其与编程语言、平台和硬件无关。此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并得到 IBM,莲花(Lotus),康柏(Compaq)等公司的支持,于2000年提交给万维网联盟(World Wide Web Consortium;W3C),目前 SOAP 1.1 版是业界共同的标准,属于第二代的XML协定(第一代具主要代表性的技术为XML-RPC以及WDDX)。用一个简单的例子来说明 SOAP 使用过程,一个 SOAP 消息可以发送到一个具有 Web Service 功能的 Web 站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个 XML 格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。* SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;* SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;* SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;* SOAP绑定(binding),使用底层协议交换信息。
PHP安装SOAP扩展1.安装php-soap:
yum install php-soap -y2.在PHP的编译参数中加入--enable-soap,如: 
------
./configure --prefix=/usr/local/php-5.2.12 \
--with-config-file-path=/usr/local/php-5.2.12/etc \
--enable-fastcgi --enable-force-cgi-redirect --with-curl \
--with-gd --with-ldap --with-snmp --enable-zip --enable-exif \
--with-pdo-mysql --with-mysql --with-mysqli \
--enable-soap
------ PHP建立SOAP服务器
--== 建立函数文件 ==--
这里我们建立一个soap_function.php的文件,用于定义公开给请求的调用的函数 * file name:soap_function.php 
------<?phpfunction get_str($str){
        return 'hello '.$str;}function add_number($n1,$n2){
        return $n1+$n2;}?>------

--== 建立服务,注册函数 ==--
有了上步操作,我们还要建立一个SOAP服务并且将定义好的函数注册到服务中 * file name:soap_service.php 
------<?phpinclude_once('soap_function.php');//导入函数文件$soap = new SoapServer(null,array('uri'=>'http://zenw.org')); //建立SOAP服务实例
$soap->addFunction('get_str');
$soap->addFunction('sum_number');
//或者可以 $soap->addFunction(array('get_str','sum_number'));$soap->addFunction(SOAP_FUNCTIONS_ALL); //常量SOAP_FUNCTIONS_ALL的含义在于将当前脚本所能访问的所有function(包括一些系统function)都注册到服务中
$soap->handle(); //SoapServer对象的handle方法用来处理用户输入并调用相应的函数,最后返回?>------
到这里,一个SoapServer就搭建好了,剩下的就是如何请求她了

PHP建立SOAP客户端请求
 *  file name:soap_client.php 
------<?php$client = new SoapClient(null,array('location'=>"http://192.168.3.229/soap/soap_service.php", //在SOAP服务器建立环节中建立的soap_service.php的URL网络地址
                                    'uri'=>'http://zenw.org'));$str = 'zenwong';echo "get str is :".$client->get_str($str);
echo "<br />";
echo 'sun number is:'.$client->sun_number(9,18);?>------

更多内容可访问:
http://www.zenw.org
http://doc.zenw.org
http://doc.zenw.org/linux
http://doc.zenw.org/mysql
http://doc.zenw.org/developer