php中创建和调用webservice接口示例


Posted in PHP onJuly 25, 2014

作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice。简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到你的请求,根据传过来的参数,做一些处理,然后把处理后的结果以XML形式返回来给你,你的程序就解析这些XML数据,然后显示出来或做其它操作。

写webservice需要了解:基础的 Web Services 平台是 XML + HTTP;另外Web services 平台的元素:SOAP (简易对象访问协议),UDDI (通用描述、发现及整合),WSDL (Web services 描述语言);任何webservice都包括客户端和服务端。下面以实例讲解如何用php写webservice接口让别人调用:

首先需要建一个.wsdl文件,那么php如何建这个文件呢。有两种方式可以实现,一种是直接用zend studio工具生成;另一种就是php根据SoapDiscovery.class.php自动生成wsdl文件;具体哪一种根据自己情况选择,我一般用的是前者这样比较快速。下面写一下用类如何生成wsdl文件,首先需要上网上下载那个类文件,然后引入类文件后,看如下代码:
creat_wsdl.php

<?php

include_once('Service.php');

include_once('SoapDiscovery.class.php');

$wsdl=new SoapDiscovery('Service','soap');//第一参数为类名,也是生成wsdl的文件名Service.wsdl,第二个参数是服务的名字可以随便写

$wsdl->getWSDL();

?>

这样运行creat_wsdl.php文件就可以生成wsdl文件了。是不是很简单
任何一个webservice都需要和一个实现类绑定的。也就是说别人调用的wsdl文件其实真正其作用的就是实现类中的方法;如下代码为服务端类文件
Service.php
<?php

class Service

{

public function Hello()

{

echo 'hello good';

}

public function Add($a,$b)

{

return $a+$b;

}

}

$server=SoapServer('Service.php',array('soap_version'=>soap_1_2));

$server->setClass('Service');//注册Service类的所有方法

$server->handle();//处理请求

?>

写好服务端和wsdl文件后那么就需要客户端调用了。请看客户端调用代码:

client.php

<?php

ini_set('soap.wsdl_cache_enabled','0');//关闭缓存

$soap=new SoapClient('http://127.0.0.1/soap/Service.php?wsdl');

echo $soap->Add(1,2);

//echo $soap->_soapCall('Add',array(1,2))//或者这样调用也可以

?>

这就是一个完整的写webservice接口和调用的实例代码,希望对需要的phper有所帮助;
那么调用别人的webservice接口就是client.php所写的代码这样调用。

PHP 相关文章推荐
php 分库分表hash算法
Nov 12 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
thinkphp中session和cookie无效的解决方法
Dec 19 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php文件读取方法实例分析
Jun 20 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 #PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 #PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 #PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 #PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 #PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 #PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 #PHP
You might like
PHP也能干大事 随机函数
2015/04/14 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
javascript操作数组详解
2014/12/17 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python isinstance函数介绍
2015/04/14 Python
Python可变参数函数用法实例
2015/07/07 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python数据库小程序源代码
2019/09/15 Python
Django的CVB实例详解
2020/02/10 Python
python使用列表的最佳方案
2020/08/12 Python
python RSA加密的示例
2020/12/09 Python
小学中秋节活动方案
2014/02/06 职场文书
大课间体育活动方案
2014/03/12 职场文书
品牌服务方案
2014/06/03 职场文书
农民工讨薪标语
2014/06/26 职场文书
机关作风建设自查报告
2014/10/22 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
学生检讨书范文
2014/10/30 职场文书
python 调用js的四种方式
2021/04/11 Python
学习nginx基础知识
2021/09/04 Servers
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL