很多站长朋友们都不太清楚php连接soap,今天小编就来给大家整理php连接soap,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php怎样通过SoapClient调用webservice接口 2、 如何使用PHP调用ArcGIS Server的Soap接口 3、 php中soapClient如何配置 4、 php连接webservice每次都要new SoapClient()吗 php怎样通过SoapClient调用webservice接口首先要先配置;extension=php_soap.dll我们打开php.ini
php怎样通过SoapClient调用webservice接口
我们打开一个webservice的例子
php怎样通过SoapClient调用webservice接口
怎样看这个xml的文件呢,如下图
php怎样通过SoapClient调用webservice接口
下面我们开始写代码,先实例化SoapClient
php怎样通过SoapClient调用webservice接口
使用接口方法,get_object_vars得到的是指定的对象中定义的属性组成的关联数组
php怎样通过SoapClient调用webservice接口
6
最后运行一下测试一下
php怎样通过SoapClient调用webservice接口
如何使用PHP调用ArcGIS Server的Soap接口查看ArcGIS Server的SOAP SDK的帮助的时候,会发现所提供的示例代码只有c#,vb.net和java的,并没有PHP语言的示例,实际上并不是不支持PHP语言,从PHP toolkits include PHP-SOAP and NuSOAP上可以看出PHP是支持Soap协议的,只不过使用PHP并没有提供现成的工具可以将WSDL转换成本地化的类,而.NET SDK提供了Wsdl.exe工具,java提供了Apache Axis工具可以将WSDL中的类型转换成本地化类。
当使用PHP调用WebService的时候,当输入的参数是简单数据类型的时候是没有任何问题的,返回值类型是类得时候也没有任何的问题,但是当输入参数的值类型为某个类得时候,就无法调用了,这些类太多了,自己手写这些类几乎是不可能,因此找到一个类似于Wsdl.exe和Apache Axis的工具还是很有必要的,在网上终于搜到一个工具,名字为wsdl2php.php可以实现该功能
php中soapClient如何配置一、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函数库
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压缩函数库
php连接webservice每次都要new SoapClient()吗最近工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经包含了处理soap的模块,但是资料太少了,上php官网上查帮助,写的不是很容易理解,经过多次实践,终于搞清楚了,php调用web service还是非常简单的。下面用一个例子说明:
web service服务是查询QQ用户是否在线
使用php5开发客户端:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_dump($client->__getFunctions());
print("");
var_dump($client->__getTypes());
print("");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult = $client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);
echo $arrResult->qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?>
代码确实很简单吧,创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。
调用web service前可以先调用SoapClient的__geunctions()和__getTypes()方法看一下你要调用的web service暴露的方法,参数和数据类型,需要注意的是传入的参数名一定要和soapclient里面定义的一致,否则参数是传不过去的。
需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。如果参数要求是一个结构体,请用类代替,如上面的代码。
另外发现个问题,如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xml字符串.
关于php连接soap的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php连接soap php连接两个字符串的符号的详细内容...