php中使用soap的建立共享接口

在网站需要建立共享接口的时候,可以使用soap。 下面介绍下在PHP中如何使用SOAP的完整过程。
1、确认PHP环境是否支持soap,检查php配置文件,把extension=php_soap.dll前的分号(;)去掉(windows);若是自己编译则编译时必须加上 --enable-soap选项。
2、建立soap服务端。 下面通过实例来说明如何建立服务端。
<?php
class service_class {
    /**
    * @return string
    * */
    function sayHello(){
        return 'hello world';
    }
    /**
    * @param string $name;
    * @return string;
    */
    function getName($param1, $param2){
        return $param1.$param2;
    }
}
$server = new SoapServer('testwsdl.wsdl');  //------------1
$server->setClass('service_class');     //------------2
$server->handle();       //------------3
?>

这里有一点需要注意的是:如果要在生成的wsdl文件有类型的话,应使用方法注释;(string,integer等).

(1)生成一个实例,参数"buildin.wsdl"是wsdl文件所在的位置,因为SoapServer还没有提供生成wsdl的实现,因些要指明细wsdl文件所在的位置.
(2)注册webservice的提供的方法,默认为类里面的所有方法
(3)处理请求;

到这里为止,在浏览器中访问本php文件,如果出现如果提示
"cant find HTTP_RAW_POST_DATA";则在创建soapServer前,插入以下代码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
if (!isset($HTTP_RAW_POST_DATA)){
$HTTP_RAW_POST_DATA = file_get_contents(''php://input'');
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

此时如果提示bad request之类的错误,说明web service已经启动了.
3、创建wsdl文件
如果没有忘记前面提到的wsdl的话,此刻必会想即然不还不能生成wsdl文件的话,那那个buildin.wsdl从何而来呢,如果对zend studio熟悉的话,就会想到tool菜单下面的wsdl generator,对了,用这个工具

可以生成很帅的wsdl文件,
下面介绍详细生成方法:A、tools->wsdl generator 右键点击之(左键点击会造成zendstudio死掉,我的是5.5版本) B、输入配置文件名称,即wsdl文件的名称,这里为testwsdl,第三个框为选择wsdl文

件的存放地址, 然后点击下一步 C、添加函数或类文件,选择相应类文件,右边会显示相应类名,URL LOCATION 为相应访问地址. 然后点下一步,直接点finish即完成wsdl文件的创建。D、测试访问

wsdl文件,如我这里为:http://127.0.0.1/test/soap/testwsdl.wsdl,可以看到正确的内容说明一切都OK了。
4、创建soap客户端,测试使用soap。代码如下:
<?php
$client = new SoapClient('http://127.0.0.1/test/soap/testwsdl.wsdl');
$rtn = $client->__call('sayHello', array()); //必须至少传两个参数,第一个位函数名,第二个位函数参数(数组形式)
echo $rtn.'<br>';
$rtn = $client->__call('getName', array('my name is zhengshufa','<br>i am fafa211'));
echo $rtn;
?>
上面运行结果输出为:
hello world
my name is zhengshufa
i am fafa211

你可能感兴趣的:(PHP,webservice,String,service,SOAP,generator)