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教程 基本语法
Oct 23 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP RabbitMQ消息列队
May 11 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获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php绘制一个矩形的方法
2015/01/24 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
python3爬虫中异步协程的用法
2020/07/10 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
业务部经理岗位职责
2014/01/04 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
中学自我评价
2014/01/31 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
服装采购员岗位职责
2014/03/15 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
婚宴主持词
2015/06/30 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python