zoukankan      html  css  js  c++  java
  • PHP中Soap模块安装与使用例子

    PHP5中的这个SOAP扩展目的是为了实现PHP对Web services的支持。与其它实现PHP对Web services的支持的方法不同,SOAP扩展是用C写的,因此它比其它方法具有速度优势

    SOAP扩展支持以下规范。

    * SOAP 1.1
    * SOAP 1.2
    * WSDL 1.1

    SOAP扩展主要用来处理RPC形式的Web services。不过,你也可以使用文本形式的WSDL文件配合WSDL模式的服务端和客户端。

    一、Linux下安装soap模块
    安装完php后最好保留当时安装的文件,比如usr/local/php-5.3.2
    查看soap模块是否安装的办法:在php的安装目录下运行php -m来查看

    如:/usr/local/php/bin/php -m |grep ‘soap’
    如果没有安装,则进入php的安装源文件夹
    cd php-5.3.2/ext/soap
    进入后在此运行phpize命令
    /usr/local/php/bin/phpize
    查看信息是否有出错,没有出错的话运行如下命令:
    ./configure –with-php-config=/usr/local/php/bin/php-config –enable-soap
    然后是安装编译
    make
    最后是安装
    make install
    安装好之后会提示soap.so文件的保存路径
    编译后的soap.so文件保存在了/usr/local/php/lib/php/extensions/no-debug-non-zts-20111222目录下,接着修改php.ini文件
    手工修改:查找/usr/local/php/etc/php.ini中的extension_dir = “./”,默认是注释掉的
    修改为extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20111222/”
    并在此行后增加如下,然后保存:
    extension = “soap.so”
    重新启动apache,在运行php -m就已经能看到扩展的soap模块了。
    如果还要安装扩展别的模块可以以此类推。


    二、Windows下安装soap模块


    在Windows下可以通过修改php.ini来选择当PHP启动时加载哪些扩展库。也可以在脚本中通过使用 dl()来动态加载。PHP扩展库的DLL文件都具有php_前缀。很多扩展库都内置于Windows版的PHP之中。这意味着要加载这些扩展库不需要额外的DLL文件和extension配置指令。Windows下的PHP扩展库列表列出了需要或曾经需要额外PHP DLL文件的扩展库。
    要在php.ini中启用某扩展库,需要去掉该行extension=php_*.dll前的注释符号,将想要加载的扩展库前的分号(;)删除即可。
    启用php_soap.dll扩展库
    // 将这一行
    ;extension=php_soap.dll
    // 改成这样
    extension=php_soap.dll
    Note: 如果运行服务器模块版的PHP,在修改了php.ini之后别忘了重新启动web服务器以使其改动生效。
    下面是内置的扩展库列表:
    php_bz2.dll   bzip2压缩函数库
    php_calendar.dll  历法转换函数库
    php_crack.dll   密码破解函数库
    php_ctype.dll   ctype家族函数库
    php_curl.dll   CURL,客户端URL库函数库
    php_dba.dll   DBA:数据库(dbm 风格)抽象层函数库
    php_dbase.dll   dBase函数库
    php_dbx.dll   dbx函数库  
    php_domxml.dll   DOM XML函数库
    php_dotnet.dll   .NET函数库
    php_exif.dll   EXIF函数库
    php_fbsql.dll   FrontBase函数库
    php_fdf.dll   FDF:表单数据格式化函数库
    php_filepro.dll  filePro函数库
    php_ftp.dll   FTP函数库
    php_gd.dll   GD库图像函数库
    php_gd2.dll   GD库图像函数库
    php_gettext.dll  Gettext函数库
    php_hyperwave.dll  HyperWave函数库
    php_iconv.dll   ICONV字符集转换
    php_ifx.dll   Informix函数库
    php_iisfunc.dll  IIS 管理函数库
    php_imap.dll   IMAP,POP3 和 NNTP 函数库
    php_ingres.dll   Ingres II函数库
    php_interbase.dll  InterBasefunctions
    php_java.dll   Java函数库
    php_ldap.dll   LDAP函数库
    php_mbstring.dll  多字节字符串函数库
    php_mcrypt.dll   Mcrypt 加密函数库
    php_mhash.dll   Mhash函数库
    php_mime_magic.dll  Mimetype函数库
    php_ming.dll   Ming函数库(Flash)
    php_msql.dll   mSQL函数库
    php_mssql.dll   MSSQL函数库
    php_mysql.dll   MySQL函数库
    php_mysqli.dll   MySQLi函数库
    php_oci8.dll   Oracle 8函数库
    php_openssl.dll  OpenSSL函数库
    php_overload.dll  对象重载函数库
    php_pdf.dll   PDF函数库
    php_pgsql.dll   PostgreSQL函数库
    php_printer.dll  打印机函数库
    php_shmop.dll   共享内存函数库
    php_snmp.dll   SNMP函数库
    php_soap.dll   SOAP函数库
    php_sockets.dll  Socket函数库
    php_sybase_ct.dll  Sybase函数库
    php_tidy.dll   Tidy函数库
    php_tokenizer.dll  Tokenizer函数库
    php_w32api.dll   W32api函数库
    php_xmlrpc.dll   XML-RPC函数库
    php_xslt.dll   XSLT函数库
    php_yaz.dll   YAZ函数库
    php_zip.dll   Zip文件函数库
    php_zlib.dll   ZLib压缩函数库


    SOAP模块的使用方法


     首先我们来了解一下SOAP扩展的三个主要对象:
    1.SoapServer

     代码如下
    1  SoapServer用于创建php服务器端页面时定义可被调用的函数及返回响应数据。创建一个NON-WSDL模式的SoapServer对象的语法格式如下:
    $soap = new SoapServer(null,$arr);
    2       $arr是SoapServer的属性信息,是一个数组。
          SoapServer对象的addFunction方法是用来声明哪个函数可以被客户端调用,使用方法如下:
    $soap->addFunction($functionName);
    3 $functionName是允许客户端调用的方法名称。如果所有的方法都允许调用,可使用下面的方法:
    $soap->addFunction(SOAP_FUNCTIONS_ALL);
    4       SoapServer对象的handle方法用来处理用户输入并调用相应的函数,最后返回给客户端处理的结果。使用方法如下:
    $soap->handle([$soapRequest]);

          $soapRequest是一个可选参数,用来表示用户的请求信息。如果不指定$soapRequest,则表示服务器将接收用户的全部请求。
    2.SoapClient

          SoapClient用于调用远程服务器上的SoapServer页面,并实现了对相应函数的调用,创建一个SoapClient对象的方法如下:

     代码如下
    1 $client = new SoapClient(null,$arr);

          其中,参数$arr与SoapServer相同。穿件SoapClient对象后,调用服务器端的方法如下:

     代码如下
    1 $client->functionName($p);

    functionName()为服务器端待调用的函数名,$p 为参数。
    3.SoapFault

          SoapFault用于生成soap访问过程中可能出现的错误。创建一个SoapFault对象的方法为:

     代码如下
    1 $fault = new SoapFault($code,$msg);

          参数$code为用户定义的错误代码,$msg为用户定义的错误信息。soapFault对象会在服务器端页面出现错误时自动生成,或者通过用户自行创建SoapFault对象时生成。对于Soap访问时出现的错误,客户端可通过捕捉SoapFalut对象来获得相应的错误信息。在客户端捕获SoapFault对象后,可以通过下面的代码获得错误代码和错误信息:

     代码如下
    1 $fault->code;  //错误代码
    $fault->msg;   //错误信息

          以上就是PHP SOAP模块主要的三个对象介绍,下面我们通过一个简单的实例,帮助大家理解一下soap模块的使用方法。
    4.PHP SOAP实例(NON-WSDL模式)

    服务器(server)端代码server.php:

     代码如下
    1 <?php
        $arr = array(
            'location' => 'http://192.168.187.132/server.php',
            'uri'      => 'http://192.168.187.132/'
        ); 
        $soap = new SoapServer( null ,$arr );
       
        $soap->addFunction(SOAP_FUNCTIONS_ALL);  //允许客户端调用所有的方法
        $soap->handle();
    2
        function a(){
            return '李坏博客';
        }  
        function b($b){
            return $b;
        }  

               

    客户端(client)代码:

     代码如下
    1 <?php
        $arr = array(
            'location' => 'http://192.168.187.132/server.php',
            'uri'      => 'http://192.168.187.132/'
        ); 
        $soap = new SoapClient( null, $arr );
       
        echo $soap->a(),'<br />';
        echo $soap->b('b');
    ?>
  • 相关阅读:
    CentOS 6.3 安装 phpmyadmin
    mysql 常用命令
    用PHP将Unicode 转化为UTF-8
    Angularjs通过$http与服务器通信
    话说Angularjs的$resource模块
    AngularCSS--关于angularjs动态加载css文件的方法(仅供参考)
    Angular-ui-router + oclazyload + requirejs实现资源随route懒加载
    移动前端开发之viewport的深入理解
    AngularJS的ng-class切换class
    AngularJS中如何对Controller与Service进行分层设计与编码
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8333925.html
Copyright © 2011-2022 走看看