PHP webservice 的初接触
webservice 现在是开始流行了,很多业务开启了这个功能。去年接触的一个金融类的项目有类似功能调用。当时没放心思研究,最两天试着接触了下,还真不错的。起步其实挺简单。
服务端的代码
server.php
<?php
class PassPort { /**
* 打招呼
* @param string $name
*/
public function hello($name) {
return 'Hello '. $name. ' !<br />';
} /**
* 求和
* @param int $a
* @param int $b
* @return int
*/
public function add($a, $b) {
return $a + $b;
} /**
* 再见了
*/
public function say() {
return 'GoodBye!<br />';
}
}
首先需要有个 wsdl 文件。两种方法生成,一个是借助 SoapDiscovery.class.php 类生成,这个需要从网上找下。
include 'server.php';//服务类的定义文件
include 'SoapDiscovery.class.php'; //第一个参数为类的名字,这里是 Api 也是生成的wsdl的文件的名字,第二个参数是服务的名字可以自己自由定义
$wsdl = new SoapDiscovery('Api', 'service');
$wsdl->getWSDL();
还有一种方法是通过 ZendStudio 生成,这个其实也很简单。可能有人找不到添加 wsdl ,那就说明你没有安装这个插件。点Help=》Welcome 然后选中 WSDL,会重启一次。
新建的时候 tagert namespace 填写自己项目的访问地址 就可以基本不用改。生成之后需要改些东西。
TestSoapSoap下面填写php webService 如soapservice.php
NewOperation:添加方法。WebService里需要提供给别人调用的方法名
input :设置输入参数名和类型
output:设置返回值。
Add part:如果在input里添加,就是添加多个参数
set Type / set Element: 设置参数的input/output类型Type包含常见的数据类型(int,string,boolean,float,time…),Element就是自定义元素类型。
注意一点,右侧的那些方法都是自己手动 通过 New Operation 来添加的,还有里面的参数。关于参数和返回有点需要注意的,可以没有参数,但是需要有返回,没有返回客户端不知道处理结果啊,我是这么想的,必须要有返回。
这个时候看这好像完成了,其实没有,因为只有第一个方法(默认会有一个)是存在的,其他的都没有。需要点下中间的那个类似复选框的东西,然后在下面的界面点 Generate Binding Content 然后才可以正常用,否则会出现类似下面的提示错误。
xxx is not a valid method for this service
接下来就是写客户端的调用了 client.php。
<?php
ini_set('soap.wsdl_cache_enabled', 0);
ini_set('display_errors', 1);
error_reporting(E_ALL);//错误显示级别 $client = new SoapClient('soap.wsdl');
echo $client->hello('wayne');
echo 'The result is:', $client->add(7, 8), '<br />';
echo $client->say();
unset($client);
这里要提下,出现 xxx is not a valid method for this service 这样的提示,还有个可能就是你的服务端的方法改了,但是soap存在缓存,默认是打开的。linux环境下是 /tmp 目录下,调试过程中可以设置关闭缓存。使用语句 ini_set('soap.wsdl_cache_enabled', 0);来关闭。
最后通过浏览器访问 client.php 就可以看到想要的结果了。
Hello wayne !
The result is:15
GoodBye!
好了,到这里,初步接触就结束了。其实实例化SoapServer SoapClient 对象的时候,还有好多参数,我现在的是 server.php 和 client.php 都在通一个目录下。不存在url,之类的路径问题。接下来就要关注这个了。
PHP webservice 的初接触的更多相关文章
- 初接触BurpLoader工具
初接触burp工具 菜鸟一枚,现在在接触一段时间测试,我在测试功能性的时候,想着网站被黑案例那么多,我是不是也应该弄弄安全性测试了,所以就有了下边的第一次接触BurpLoader工具来测试手机的app ...
- 软工实践练习-Git初接触
第一次听到Git,有点不知所云,听了实践课老师的讲解,才明白了Git作为最先进的分布式版本控制系统的重要性. 至于Git的安装和使用仍旧是自己摸索着去完成了,当然在这过程中也是遇到了很多的问题. 接下 ...
- vi初接触
vi初接触 它有三种模式: 一 一般模式 二 编辑模式 三 命令行模式 介绍几种比较常用的吧 -- 退出:q 写入:w 强制:! (以上可叠加) 显示行号:set nu 取消:set nonu 跳转到 ...
- ExtJS初接触 —— 了解 Ext Core
ExtJS初接触 —— 了解 Ext Core Ext Core是一款和jQuery媲美的轻型JS库,基于MIT许可.对于Dom的操作,我个人还是比较喜欢用jQuery.当然如果项目中用的是ExtJS ...
- ExtJS初接触 - 在项目中使用ExtJS
ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...
- Java之路——Java初接触
本文大纲 1.Java是什么 2.Java历史 3.Java技术范围 3.1 Java SE平台技术范围 3.2 Java EE技术范围 3.3 Java 体系技术范围 4.总结 1.Java是什么 ...
- python 之 数据类型初接触
python 之 数据类型初接触 标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dicti ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- Webservice初接触
公司用到了Powerbuilder+Webserice的技术,能将数据窗口中对数据库的请求,以SQL语句的形式,发到Webservice中,然后由Webservice完成对数据库的请求,并将结果返回给 ...
随机推荐
- SQL Server 2008 允许远程链接 解决方法
用户在使用SQL Server 2008远程链接时,可能会弹出如下对话框: 在链接SQL服务器时发生网络链接错误或特定实例错误.SQL服务器不存在或者链接不成功.请验证用户名是否正确或SQL服务器是否 ...
- Excel 自定义关闭按钮
遇到过这样一个需求,是在excel关闭的时候,不要excel本身的保存窗口,只用自定义的. 这个的需要第一,是点击关闭时候触发, 第二:触发后,不能还是弹出那个窗口 第三:取消后,要能停止程序 为了弄 ...
- 缓存技术PK:选择Memcached还是Redis(转)
[IT168 技术]要Memcached还是要Redis?在构建一款现代且由数据库驱动的Web应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现.并给每一位开发人员带来困扰.在考虑对应 ...
- Ajax的两个用法
1.实现的效果是:通过一个函数,里面调用Ajax,函数的返回值是Ajax成功调用之后得到的返回值. 用jQuery进行简单的演示: function getRobotInfo(id) { var ip ...
- 新手入门贴:史上最全Web端即时通讯技术原理详解
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
- pip和 easy_insall的区别
作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么...... easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键 ...
- post 获取checkbox值
$str_tag=""; $s=$_POST['goods_server_name']; for($i=0;$i<count($s);$i++){ if($i==0){ $s ...
- 【BZOJ】1037: [ZJOI2008]生日聚会Party(递推+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1037 看来自己越来越弱了... 这些计数题设计的状态都很巧妙,,自己智商太低QAQ 和矩阵dp做的那 ...
- MyBitis(iBitis)系列随笔之三:简单实现CRUD
Mybitis(iBitis)实现对对象增删改查操作要借助<select/>查询,<insert/>增加,<update/>更新,<delete/>删除 ...
- 哪些工具可以在word中快速绘制图形
在数学试卷.论文.电子教案等编写过程中,我们经常要作出数学图形或图像,若用Word自身携带的绘图工具绘制,多有不便.比如一些曲线的形状很难画得像,画到位,作图时修修改改,颇为费力,所以需要借助一些辅助 ...