导航:首页 > 编程语言 > php开启soap扩展

php开启soap扩展

发布时间:2022-07-30 19:00:54

‘壹’ 如何使用php调用ArcGIS Server的Soap接口

前一阵子,简单的学习了一下ArcGIS Server,在开发层次上ArcGIS Server支持两种协议,一个是老的Soap协议,也就是webservice,另外一种是REST协议,其中REST协议是从ArcGIS Server9.3开始支持的协议,也是ESRI今后只要支持的协议,但是老的Soap协议还继续支持。该章得内容主要介绍如何使用PHP来调用ArcGIS Server的WebService。
查看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可以实现该功能,其代码如下所示:
// +------------------------------------------------------------------------+
// | wsdl2php |
// +------------------------------------------------------------------------+
// | Copyright (C) 2005 Knut Urdalen |
// +------------------------------------------------------------------------+
// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// +------------------------------------------------------------------------+
// | This software is licensed under the LGPL license. For more information |
// | see http://wsdl2php.sf.net |
// +------------------------------------------------------------------------+

ini_set('soap.wsdl_cache_enabled', 0); // disable WSDL cache

//if( $_SERVER['argc'] != 2 ) {
// die("usage: wsdl2php /n");
//}

$wsdl = "liuf:8399/arcgis/services/catchment/MapServer?wsdl";

print "Analyzing WSDL";

try {
$client = new SoapClient($wsdl);
} catch(SoapFault $e) {
die($e);
}
print ".";
$dom = DOMDocument::load($wsdl);
print ".";

// get documentation
$nodes = $dom->getElementsByTagName('documentation');
$doc = array('service' => '',
'operations' => array());
foreach($nodes as $node) {
if( $node->parentNode->localName == 'service' ) {
$doc['service'] = trim($node->parentNode->nodeValue);
} else if( $node->parentNode->localName == 'operation' ) {
$operation = $node->parentNode->getAttribute('name');
//$parameterOrder = $node->parentNode->getAttribute('parameterOrder');
$doc['operations'][$operation] = trim($node->nodeValue);
}
}
print ".";

// get targetNamespace
$targetNamespace = '';
$nodes = $dom->getElementsByTagName('definitions');
foreach($nodes as $node) {
$targetNamespace = $node->getAttribute('targetNamespace');
}
print ".";

// declare service
$service = array('class' => $dom->getElementsByTagNameNS('*', 'service')->item(0)->getAttribute('name'),
'wsdl' => $wsdl,
'doc' => $doc['service'],
'functions' => array());
print ".";

// PHP keywords - can not be used as constants, class names or function names!
$reserved_keywords = array('and', 'or', 'xor', 'as', 'break', 'case', 'cfunction', 'class', 'continue', 'declare', 'const', 'default', 'do', 'else', 'elseif', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'extends', 'for', 'foreach', 'function', 'global', 'if', 'new', 'old_function', 'static', 'switch', 'use', 'var', 'while', 'array', 'die', 'echo', 'empty', 'exit', 'include', 'include_once', 'isset', 'list', 'print', 'require', 'require_once', 'return', 'unset', '__file__', '__line__', '__function__', '__class__', 'abstract', 'private', 'public', 'protected', 'throw', 'try');

‘贰’ PHP如何启动soap服务

修改PHP.ini文件,

找到;extension=php_soap.dll去掉前面的分号,

重起IIS或者apache就可以了

‘叁’ php soap扩展做webservice的时候 如何传入数组或者对象参数

SOAP可以传递数组和对象,比较复杂不便详述。你可以在网上查阅SOAP的规范。SOAP的对象需要定义在wsdl里。这就要求java调用方也定义这些对象。

使用SOAP要注意一个问题:SOAP没有统一的标准,不同语言对SOAP的实现有微小差别,有可能导致不兼容。

编写SOAP的wsdl是件麻烦而且痛苦的事。你可以试试使用第三方库。Yii框架就提供一个强大的SOAP解决方案。你可以通过注释和类,自动生成wsdl。个人不推荐在PHP中使用SOAP,因为PHP不像其他语言类似JAVA、.NET,提供强大的SOAP支持。

你可以考虑轻量级API,也可以考虑XML-RPC。并不比SOAP差,而且很灵活。

望采纳,谢谢!

‘肆’ PHP 页面调用天气预报web服务 我想在一个PHP页面直接调用现成的webservice

完全可以。前提是要打开soap扩展,调用方法如下:
<?php
$client = new SoapClient('http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl');
$parm=array('theCityCode'=>'三亚','theUserID'=>'');
$result=$client->getWeather($parm);
print_r($result);
?>

‘伍’ 在服务器配置PHP的时候需要开通几个扩展,请问这几个扩展对我的网站有何用

网络不误导你 ,我也是网络的,扩展全开都行,不妨碍你用就是了,干嘛非要这么细致的分析每个扩展的作用呢?给你一份快餐,要么你吃了,要么你不吃。你会分析其他的情况吗?
扩展库 说明 注解
php_bz2.dll bzip2 压缩函数库 无
php_calendar.dll 历法转换函数库 自 PHP 4.0.3 起内置
php_cpdf.dll ClibPDF 函数库 无
php_crack.dll 密码破解函数库 无
php_ctype.dll ctype 家族函数库 自 PHP 4.3.0 起内置
php_curl.dll CURL,客户端 URL 库函数库 需要:libeay32.dll,ssleay32.dll(已附带)
php_cybercash.dll 网络现金支付函数库 PHP <= 4.2.0
php_db.dll DBM 函数库 已废弃。用 DBA 替代之(php_dba.dll)
php_dba.dll DBA:数据库(dbm 风格)抽象层函数库 无
php_dbase.dll dBase 函数库 无
php_dbx.dll dbx 函数库
php_domxml.dll DOM XML 函数库 PHP <= 4.2.0 需要:libxml2.dll(已附带),PHP >= 4.3.0 需要:iconv.dll(已附带)
php_dotnet.dll .NET 函数库 PHP <= 4.1.1
php_exif.dll EXIF 函数库 需要 php_mbstring.dll。并且在 php.ini 中,php_exif.dll 必须在 php_mbstring.dll之后加载。
php_fbsql.dll FrontBase 函数库 PHP <= 4.2.0
php_fdf.dll FDF:表单数据格式化函数库 需要:fdftk.dll(已附带)
php_filepro.dll filePro 函数库 只读访问
php_ftp.dll FTP 函数库 自 PHP 4.0.3 起内置
php_gd.dll GD 库图像函数库 在 PHP 4.3.2 中删除。此外注意在 GD1 中不能用真彩色函数,用 php_gd2.dll 替代。
php_gd2.dll GD 库图像函数库 GD2
php_gettext.dll Gettext 函数库 PHP <= 4.2.0 需要 gnu_gettext.dll(已附带),PHP >= 4.2.3 需要 libintl-1.dll,iconv.dll(已附带)。
php_hyperwave.dll HyperWave 函数库 无
php_iconv.dll ICONV 字符集转换 需要:iconv-1.3.dll(已附带),PHP >=4.2.1 需要 iconv.dll
php_ifx.dll Informix 函数库 需要:Informix 库
php_iisfunc.dll IIS 管理函数库 无
php_imap.dll IMAP,POP3 和 NNTP 函数库 无
php_ingres.dll Ingres II 函数库 需要:Ingres II 库
php_interbase.dll InterBase functions 需要:gds32.dll(已附带)
php_java.dll Java 函数库 PHP <= 4.0.6 需要:jvm.dll(已附带)
php_ldap.dll LDAP 函数库 PHP <= 4.2.0 需要 libsasl.dll(已附带),PHP >= 4.3.0 需要 libeay32.dll,ssleay32.dll(已附带)
php_mbstring.dll 多字节字符串函数库 无
php_mcrypt.dll Mcrypt 加密函数库 需要:libmcrypt.dll
php_mhash.dll Mhash 函数库 PHP >= 4.3.0 需要:libmhash.dll(已附带)
php_mime_magic.dll Mimetype 函数库 需要:magic.mime(已附带)
php_ming.dll Ming 函数库(Flash) 无
php_msql.dll mSQL 函数库 需要:msql.dll(已附带)
php_mssql.dll MSSQL 函数库 需要:ntwdblib.dll(已附带)
php_mysql.dll MySQL 函数库 PHP >= 5.0.0 需要 libmysql.dll(已附带)
php_mysqli.dll MySQLi 函数库 PHP >= 5.0.0 需要 libmysql.dll(PHP <= 5.0.2 中是 libmysqli.dll)(已附带)
php_oci8.dll Oracle 8 函数库 需要:Oracle 8.1+ 客户端库
php_openssl.dll OpenSSL 函数库 需要:libeay32.dll(已附带)
php_oracle.dll Oracle 函数库 需要:Oracle 7 客户端库
php_overload.dll 对象重载函数库 自 PHP 4.3.0 起内置
php_pdf.dll PDF 函数库 无
php_pgsql.dll PostgreSQL 函数库 无
php_printer.dll 打印机函数库 无
php_shmop.dll 共享内存函数库 无
php_snmp.dll SNMP 函数库 仅用于 Windows NT!
php_soap.dll SOAP 函数库 PHP >= 5.0.0
php_sockets.dll Socket 函数库 无
php_sybase_ct.dll Sybase 函数库 需要:Sybase 客户端库
php_tidy.dll Tidy 函数库 PHP >= 5.0.0
php_tokenizer.dll Tokenizer 函数库 自 PHP 4.3.0 起内置
php_w32api.dll W32api 函数库 无
php_xmlrpc.dll XML-RPC 函数库 PHP >= 4.2.1 需要 iconv.dll(已附带)
php_xslt.dll XSLT 函数库 PHP <= 4.2.0 需要 sablot.dll,expat.dll(已附带)。PHP >= 4.2.1 需要 sablot.dll,expat.dll,iconv.dll(已附带)。
php_yaz.dll YAZ 函数库 需要:yaz.dll(已附带)
php_zip.dll Zip 文件函数库 只读访问
php_zlib.dll ZLib 压缩函数库 自 PHP 4.3.0 起内置

‘陆’ php常用扩展有哪些

这个是php扩展库支持。
在php.ini里面可以看到952行。
extension=php_rar.dll
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_ming.dll
;extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_oci8_11g.dll
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phar.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll
extension= php_memcache.dll
每一行前面分号去掉的表示开启扩展库的。
有些扩展库是安装的时候默认开启的,有些需要手动开启。
还有一些扩展库需要自己去下载库文件(要对应相应的版本)
下载的库文件放在php安装根目录下面的ext目录下面。当然这个目录也是可以自己配置的。

‘柒’ php怎么在线加载 soap模块

修改PHP.ini文件,找到;extension=php_soap.dll去掉前面的分号,重起IIS或者apache就可以了

‘捌’ 怎样在php环境根目录下找到php.ini文件,搜索soap,定位到;extension=php_openssl.dll 我怎么找不到

你好,从php5.0后,php就自带了soap的支持,通过修改配置文件ini就可以激活soap。所以说,很有可能是你的php版本还未达到5以上。希望能帮助到你,亲~~

‘玖’ 怎么把php webservice 配置到

php使用webservice的时候 需要开启soap扩展 否则webservice是不好使的 当然使用nusoap这种第三方插件也可以。。 ------------------------------------------------- 给我留言 我给你发一份 记得选择满意答案哦!

阅读全文

与php开启soap扩展相关的资料

热点内容
战地联盟3解压密码 浏览:803
s型命令 浏览:23
php年薪5年 浏览:67
如何上网上设个人加密账户 浏览:44
linux打开ssh服务 浏览:78
微信位置可以加密吗 浏览:470
算法蛮力法 浏览:438
随机排练命令 浏览:147
python多进程并发 浏览:41
安卓软件安装如何躲避安全检测 浏览:647
奇幻潮翡翠台源码百度云盘 浏览:187
什么软件可以免费pdf转word 浏览:15
php正则表达式大全 浏览:394
androidntp时间 浏览:299
轮机长命令簿英文 浏览:148
oppo铃声设置被加密怎么处理 浏览:548
粤苗app图形验证码怎么填 浏览:899
管家婆架设云服务器 浏览:254
php的登录界面代码 浏览:997
php开发客户端 浏览:998