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

 代码如下 复制代码

 SoapServer用于创建php服务器端页面时定义可被调用的函数及返回响应数据。创建一个NON-WSDL模式的SoapServer对象的语法格式如下:
$soap = new SoapServer(null,$arr);

      $arr是SoapServer的属性信息,是一个数组。
      SoapServer对象的addFunction方法是用来声明哪个函数可以被客户端调用,使用方法如下:
$soap->addFunction($functionName);

$functionName是允许客户端调用的方法名称。如果所有的方法都允许调用,可使用下面的方法:
$soap->addFunction(SOAP_FUNCTIONS_ALL);

      SoapServer对象的handle方法用来处理用户输入并调用相应的函数,最后返回给客户端处理的结果。使用方法如下:
$soap->handle([$soapRequest]);

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

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

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

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

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

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

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

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

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

 代码如下 复制代码

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

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

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

 代码如下 复制代码

<?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();

    function a(){
        return '李坏博客';
    }  
    function b($b){
        return $b;
    }  

           

客户端(client)代码:

 代码如下 复制代码

<?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');
?>

时间: 2024-10-01 12:27:01

PHP中Soap模块安装与使用例子的相关文章

eclipse-python已安装了一个包,但是导入包中的模块时报错,求解决方法

问题描述 python已安装了一个包,但是导入包中的模块时报错,求解决方法 我用的是eclipse with pydev,用pip安装了impacket,编译一些impacket的例子时报错,如下图: 但是我是安装了的,在anaconda的lib的sit-packges的impacket下,是有模块ImpackPacket的,如下图: 在ecplipse中能查看模块ImpackPacket的源码的: 就是编译时报错,求解决方法 解决方案 你的编辑器环境是否能找到自己安装的包的路径.是否配置好

PHP中soap的使用例子

原文:PHP中soap的使用例子 PHP 使用soap有两种方式. 一.用wsdl文件 服务器端. <?php class service { public function HelloWorld() { return "Hello"; } public function Add($a,$b) { return $a+$b; } } $server=new SoapServer('soap.wsdl',array('soap_version' => SOAP_1_2));

关于在 Node.js 中引用模块,知道这些就够了

本文讲的是关于在 Node.js 中引用模块,知道这些就够了, Node 提供了两个核心模块来管理模块依赖: require 模块在全局范围内可用,不需要写 require('require'). module 模块同样在全局范围内可用,不需要写 require('module'). 你可以将 require 模块理解为命令,将 module 模块理解为所有引入模块的组织者. 在 Node 中引入一个模块其实并不是个多么复杂的概念. const config = require('/path/t

Python中SOAP项目的介绍及其在web开发中的应用_python

SOAP.py 客户机和服务器 SOAP.py 包含的是一些基本的东西.没有 Web 服务描述语言(Web Services Description Language,WSDL)或者任何其它附加的东西,只有用 Python 实现的 SOAP 客户机和服务器的透明支持.甚至这个包中的一个很好的功能也只是与基础架构相关:SOAP.py 支持安全套接字层(SSL)用于加密的 SOAP 传输.为使用这个功能,您必须安装 M2Crypto,M2Crypto 是一个库,包含各种加密工具和格式,从 RSA 和

NodeJS中的模块是单例的吗?

本文翻译自 Lazlojuly 的 are-node-js-modules-singletons. 本文从属于笔者的NodeJS入门与最佳实践中的NodeJS 基础系列文章,包括NodeJS 入门.NodeJS 模块导出与解析.NodeJS IOStream.NodeJS HTTPS这几部分. 笔者之前在使用require导入模块时,特别是在导入有状态的模块时,笔者会考虑其是否在多次导入情况下依然保持单例特性,或者说对于同一个文件在不同路径下导入时,是否能够识别为一致?本文即是对该特性进行解析.

Node.js中的模块机制学习笔记_node.js

Javascript自诞生以来,曾经没有人拿它当做一门编程语言.在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效.直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来.在JS逐渐流行的过程中,它大致经历了工具类库.组件库.前端框架.前端应用的变迁.Javascript先天就缺乏一项功能:模块,而CommonJS规范的出现则弥补了这一缺陷.本文将介绍CommonJS规范及Node的模块机制. 在其他高级语言中,Java有类文件,Python有im

python中paramiko模块入门 二:利用配置文件登录批量主机

之前我写过一篇关于python中paramiko模块简单功能的文章,今天继续给大家介绍这个模块的一些用法. 今天主要是利用python读取配置文件来登录批量主机,并在主机上执行shell命令,废话不说了,直接上代码了,大家可以看看: #!/usr/bin/env python import paramiko import os import datetime from ConfigParser import ConfigParser ConfigFile='config.ini' config=

举例详解Python中smtplib模块处理电子邮件的使用

  这篇文章主要介绍了举例详解Python中smtplib模块处理电子邮件的使用,是Python入门学习中的基础知识,需要的朋友可以参考下 在基于互联网的应用中,程序经常需要自动地发送电子邮件.如:一个网站的注册系统会在用户注册时发送一封邮件来确认注册;当用户忘记登陆密码的时候,通过邮件来取回密码.smtplib模块是python中smtp(简单邮件传输协议)的客户端实现.我们可以使用smtplib模块,轻松的发送电子邮件.下面的例子用了不到十行代码来发送电子邮件: ? 1 2 3 4 5 6

WPS中Excel怎么安装使用宏插件?

  WPS中Excel怎么安装使用宏插件?          1.默认的WPS Excel中的"宏"是灰色关闭状态,我们可以清楚的看到"宏"的功能是没有启用的(而Microsoft office这里默认就是启用的) 2.需要在wps excel中启用"宏"的功能,首先就需要下载一个"wps的vba插件"(点击下载),直接下载即可. 3.下载"wps的vba"之后,就需要安装了,只有安装了此模块,wps的宏功