微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

利用SOAP扩展开发WebService(PHP)

PHP实现WebService,它作为一种扩展存在于PHP中。PHP官方的SOAP扩展,优势是用c开发,相比nusoap效率上较优。
1.
认情况下,这个扩展是没有被开启的。打开 PHP.ini 文件,找到;extension=PHP_soap.dll这行,去掉注释符“;”,保存并重启 Apache 服务。
SoapServer
类和SoapClient类有两种操作模式:WSDL模式和non-WSDL模式。
WSDL模式中,构造器可以使用WSDL文件名作为参数,并从WSDL提取服务所使用的信息。non-WSDL模式中使用参数来传递要使用的信息。
2.
服务端soapService.PHP
<?PHP

    /*

       wsdl方式提供WebService

       $server = new SoapServer('Calculator.wsdl');

    */

    //non-wsdl方式提供WebService(指定相应的uri)

    $server = new SoapServer(null,array("uri"=>"soapService.PHP"));

    $server -> setClass("Calculator");

    $server -> handle();

    Class Calculator

    {

       /**

        * Add the two figures together

        * @param $num1

        * @param $num2

        */

       function addition($num1,$num2) {

           $result = $num1+$num2;

           return "{$num1} {$num2} ,结果为 ".$result." ";

       }

    }
?>

然后利用Zend Studio将此PHP文件生成WSDL文件( 发现zend studio 7.x版没有这个功能

,又不想手动去写,盛怒之下把它给卸载了,装上了6.1.2版。)
3.
客户端soapClient.PHP
<?PHP

    try {

       /*

           wsdl方式调用WebService(函数改动后须重新生成wsdl)

           $soap = new SoapClient("http://localhost/WebService/Calculator.wsdl");

        */ 

       //non-wsdl方式调用WebService

       $soap = new SoapClient(null,array(
                 'location'=> "http://localhost/WebService/soapService.PHP",
                 'uri' => 'soapService.PHP' ) );     

       //两种方式调用函数

       $result1 = $soap->addition ( 200,160 );

       $result2 = $soap->__soapCall ( "addition",array (50,70 ) );

       echo $result1 . "<br/>" . $result2;

    }

    catch ( SoapFault $e ) { echo $e->getMessage (); }

    catch ( Exception $e ) { echo $e->getMessage (); }
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐