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运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
laravel入门知识点整理
Sep 15 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在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
Python实现读取并保存文件的类
2017/05/11 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python3安装speech语音模块的方法
2018/12/24 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
python名片管理系统开发
2020/06/18 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
护理毕业生自我鉴定
2014/02/11 职场文书
《在家里》教后反思
2014/03/01 职场文书
房屋转让协议书范本
2014/04/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
材料员岗位职责
2015/02/10 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android