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完成对数据库的请求,并将结果返回给 ...
随机推荐
- python爬虫解析库之Beautifulsoup模块
一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会 ...
- EXTI—外部中断/事件控制器
外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线.每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测. EXTI 可以实现对每个中断/事件线进行单独 ...
- STM32 中断应用概览
本章参考资料< STM32F4xx 中文参考手册>第十章-中断和事件.<ARM Cortex™-M4F 技术参考手册> -4.3 章节: NVIC 和 4.4 章节: SCB— ...
- python操作word
python教程(百度经验) Python 操作Word(Excel.PPT等通用) import win32comfrom win32com.client import Dispatch, co ...
- 获取页面的checkbox,并给参数赋值
需求: 需要发送的请求:
- java web 自定义filter
filter顾名思义,过滤器的意思,在javaweb中的Struts就利用了这种机制去实现视图和业务分离. 这里来配置下自己的Filter来理解下Struts的内在. 在web.xml 中添加下面: ...
- Maven实战(插件管理)
1.前言 近期在做项目中,用到了Maven来管理项目,当理解了Maven的基础知识后,忽然看到好多的插件信息,所以在此总结一下.其有使用方法基本上都一样. 2.源码打包插件 我们能够在Apache的站 ...
- Java中的阻塞队列(BlockingQueue)
1. 什么是阻塞队列 阻塞队列(BlockingQueue)是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它提供了两个附 ...
- [转][Python基础]Python中的Lambda表达式
引用自:http://www.cnblogs.com/evening/archive/2012/03/29/2423554.html 在学习python的过程中,lambda的语法时常会使人感到困惑, ...
- GDI+学习笔记
7.1.1 GDI+概述 GDI+是微软在Windows 2000以后操作系统中提供的新的图形设备接口,其通过一套部署为托管代码的类来展现, 这套类被称为GDI+的“托管类接口”,GDI+主要提供了以 ...