首页 / PHP / PHP的SOAP原理及实现详解
PHP的SOAP原理及实现详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP的SOAP原理及实现详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2384字,纯文字阅读大概需要4分钟。
内容图文
![PHP的SOAP原理及实现详解](/upload/InfoBanner/zyjiaocheng/207/60bd0339a37d4ae5a505cc35f3b1e38e.jpg)
1. 简介:
SOAP : (全称Simple Object Access Protocol) 为交换数据的一种协议规范,该通信协议位于HTTP之上,以XML格式语言进行数据互换,使用场景:如果各项目之间使用不用的开发语言要进行数据互换,就需要一个互相都能通信的工具,WSDL,SOAP为此诞生
WSDL: WSDL 指网络服务描述语言 (Web Services Description Language),WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。
2. 配置:
PHP的SOAP扩展开启及配置
WIn环境
打开PHP.ini extension=php_soap.dll去掉前面的分号
Linux环境
编译时加上 --enable-soap
WSDL缓存类型 1为磁盘 2为内存
soap.wsdl_cache = 1
缓存文件保存位置
soap.wsdl_cache_dir = /tmp
开启或关闭WSDL缓存功能,由于每次进行SOAP都会有下载对方XML文档的过程,也是其效率低下的原因
soap.wsdl_cache_enabled =1
缓存文件的最大数量
soap.wsdl_cache_limit
缓存文件生存时间
soap.wsdl_cache_ttl = 3600
3. 应用实例:
a. 不使用wsdl的情况
服务端:
<?php
class testclass{
public function getName($name)
{
return "hello ".$name;
}
}
function getName($name)
{
return "hello ".$name;
}
$a = new SoapServer(null,array("uri"=>"index.php"));
$a->setClass("testclass"); //指定一个类中的所有方法
//$a->addFunction("test"); //指定单个方法
$a->handle(); //处理访问
uri为必填项,客户端的uri必须和服务端的保持一致
客户端
try{
$client = new SoapClient(null, array("location"=>"http://localhost/instance/index.php","uri"=>"index.php"));
//echo $client->getName("getName"); //调用方法
echo $client->__soapCall ("getName",array("name")); //调用方法
}catch(Exception $e){
print_r($e->getMessage(),true);
}
location为SOAP服务端访问地址,uri与服务端保持一致
b. 使用WSDL方法
因使用wsdl之前需要手动生成xml文件,手写的话太过繁琐,可使用SoapDiscovery.class.php 开源类生成
下载地址
<?php
class testclass{
public function getName($name)
{
return "hello ".$name;
}
}
include_once "SoapDiscovery.class.php";
$discovery = new SoapDiscovery("testclass","testclass");
$filename = $discovery->getWSDL(); //生成XML文件
echo $filename;
服务端
$a = new SoapServer("testclass.wsdl");
$a->setClass("testclass"); //指定一个类中的所有方法
$a->handle(); //处理访问
客户端
try{
$client = new SoapClient("http://localhost/instance/index.php?wsdl");
//echo $client->getName("getName");
//echo $client->__soapCall ("getName",array("name"));
print_r($client->__getFunctions()); //打印服务端所有提供的方法
}catch(Exception $e){
print_r($e->getMessage(),true);
}
扩展类所提供的方法可参考PHP Manual
内容总结
以上是互联网集市为您收集整理的PHP的SOAP原理及实现详解全部内容,希望文章能够帮你解决PHP的SOAP原理及实现详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。