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
| 代码如下 | |||||||||
|
|||||||||
$soapRequest是一个可选参数,用来表示用户的请求信息。如果不指定$soapRequest,则表示服务器将接收用户的全部请求。
2.SoapClient
SoapClient用于调用远程服务器上的SoapServer页面,并实现了对相应函数的调用,创建一个SoapClient对象的方法如下:
| 代码如下 | |||
|
|||
其中,参数$arr与SoapServer相同。穿件SoapClient对象后,调用服务器端的方法如下:
| 代码如下 | |||
|
|||
functionName()为服务器端待调用的函数名,$p 为参数。
3.SoapFault
SoapFault用于生成soap访问过程中可能出现的错误。创建一个SoapFault对象的方法为:
| 代码如下 | |||
|
|||
参数$code为用户定义的错误代码,$msg为用户定义的错误信息。soapFault对象会在服务器端页面出现错误时自动生成,或者通过用户自行创建SoapFault对象时生成。对于Soap访问时出现的错误,客户端可通过捕捉SoapFalut对象来获得相应的错误信息。在客户端捕获SoapFault对象后,可以通过下面的代码获得错误代码和错误信息:
| 代码如下 | |||
|
|||
以上就是PHP SOAP模块主要的三个对象介绍,下面我们通过一个简单的实例,帮助大家理解一下soap模块的使用方法。
4.PHP SOAP实例(NON-WSDL模式)
服务器(server)端代码server.php:
| 代码如下 | |||||
|
|||||
客户端(client)代码:
| 代码如下 | |||
|
|||
PHP中Soap模块安装与使用例子的更多相关文章
- python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)
在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...
- Linux搭建python环境中cx_Oracle模块安装遇到的问题与解决方法
安装或使用cx_Oracle时,需要用到Oracel的链接库,如libclntsh.so.11.1,否则会有各种各样的错误信息. 安装Oracle Instant Client就可得到这个链接库,避免 ...
- 关于Python3.6中Twisted模块安装的问题
今天准备学习爬虫的scrapy模块,在这之前需要安装许多别的模块,Twisted就是其一 一开始想着直接用pycharm来安装就行了,没想到安装了一会就报错了,如下 后来就换到命令提示符来安装,在官网 ...
- python3中pymysql模块安装及连接数据库(同‘python安装HTMLTestRunner’)
https://pypi.org/project/PyMySQL/#files 安装完成之后就是连接数据库了 机器上安装了mysql的数据库,并且已经创建了两张表用于测试 python3连接数据库及删 ...
- npm安装package.json中的模块依赖
npm 一键安装 package.json里的依赖时有2种情况: 1.package.json不存在时 运行命令: npm init可自动创建package.json文件 2.package.json ...
- Python中模块安装文件的创建及使用
在Python编程中,我们常常需要自己编写模块,当模块文件写好了,就需要创建安装文件,方便模块的发布. 此时,常用的方法,就是使用Python distutils(代表distribution uti ...
- Python中MySQLdb模块的安装
安装 MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如 ...
- 在单文件组件中,引入安装模块里的css的2种方式:script中引入、style中引入
在单文件组件中,引入安装模块里的css的2种方式:script中引入.style中引入 1.script中引入 <script> import 'bulma/css/bulma.css' ...
- Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7: 参考 http://blog.csdn.ne ...
随机推荐
- [BZOJ3920]Yuuna的礼物
题目大意: 给你一个长度为$n(n\le40000)$的数列$\{a_i\}(1\le a_i\le n)$,给出$m(m\le40000)$次询问,每次给出$l,r,k_1,k_2$询问区间$[l, ...
- Apache压力(并发)测试工具ab的使用教程收集
说明:用ab的好处,在处理多并发的情况下不用自己写线程模拟.其实这个世界除了LoadRunner之外还是有很多方案可以选择的. 官网: http://httpd.apache.org/(Apache服 ...
- [转]WCF RESTful service and WebGrid in ASP.NET MVC 5
使用WebClient调用WCF服务 流程:从View获取实体类-->序列化-->写入内存流中-->传给远端的WCF服务 Get.POST.PUT.DELETE,客户端以流的方式调用 ...
- 路由器漏洞复现分析第三弹:DVRF INTRO题目分析
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...
- Java防止SQL注入的几个途径
java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用 PreparedStatement来代替Statement来执行SQL语句,其 ...
- 116 - Unidirectional TSP(DP)
多段图的最短路问题 . 运用了非常多的技巧 :如 记录字典序最小路径 . 细节參见代码: #include<bits/stdc++.h> using namespace std; con ...
- 15 Basic ‘ls’ Command Examples in Linux
FROM: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ ls command is one of the most fr ...
- asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程
通过查看asp.net的整个生命周期之后 了解到在aspx的页面生命周期中 调用了BuildControlTree()方法生成页面控件树 之后再调用Rend()方法根据控件树生成html返回 aspx ...
- postman(一)批量执行接口测试用例
postman(一)批量执行接口测试用例 学习了:https://blog.csdn.net/github_36032947/article/details/78611405 还可以把collecti ...
- div 事件透传
有些时候,我们会想要把一个 div 层覆盖在另一个 div 层上,要让下层的 div 响应鼠标事件而上层的不响应仅仅只做内容展示. 这种时候,我们就可以用到一个 CSS 属性:pointer-even ...