php提供了一个专门用于soap操作的扩展库,使用该扩展库后

  可以直接在php中进行soap操作。下面将介绍soap的基本操作。

  一、soap扩展的使用方法

  php的soap扩展库通过soap协议实现了客服端与服务器端的

  数据交互操作。从php5.0后,php就自带了soap的支持。使用

  soap扩展库首先需要修改php安装目录下的配置文件php.ini

  来激活soap扩展库。

  在php.ini文件中找到如下所示的一行代码,去掉前面的注释(;)。

  ;extension=php_soap.dll

  修改后,重启web服务器即可激活soap扩展。在soap扩展库中,主要

  包括三种对象。

  1、SoapServer

  SoapServer用于创建php服务器端页面时定义可被调用的函数及返回

  响应数据。创建一个SoapServer对象的语法格式如下:

  $soap = new SoapServer($wsdl,$array);

  其中,$wsdl为soap使用得wsdl文件,wsdl是描述Web Service的一种

  标准格式,若将$wsdl设置为null,则表示不使用wsdl模式。

  生成wsdl文件:

  使用SoapDiscovery.class.php来生成wsdl文件。修改其中代码: 

 //return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
$fso = fopen($this->class_name . ".wsdl", "w");
fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'));

$array是SoapServer的属性信息,是一个数组。

  交互时的数组格式:

array(
array(
'参数名':参数值
)
)

  不是二维数组将会报错,未知原因

  SoapServer对象的addFunction方法是用来声明哪个函数可以被客户端调用,

  语法格式如下:

  $soap->addFunction($function_name);

  其中,$soap是一个SoapServer对象,$function_name是需要被调用的函数名。

  SoapServer对象的handle方法用来处理用户输入并调用相应的函数,最后返回

  给客户端处理的结果。语法格式如下:

  $soap->handle([$soap_request]);

  其中,$soap是一个SoapServer对象,$soap_request是一个可选参数,用来表示

  用户的请求信息。如果不指定$soap_request,则表示服务器将接收用户的全部

  请求。

  2、SoapCliet

  SoapClient用于调用远程服务器上的SoapServer页面,并实现了对相应函数的调用

  。创建一个SoapClient对象的语法格式如下:

  $soap = new SoapClient($wsdl,$array);

  其中,参数$wsdl和$array与SoapServer相同。

  $wsdl的地址示例:http://www.zox.com/soap?wsdl

  创建SoapClient对象后,调用服务端页面中的函数相当于调用了SoapClient的方法,

  创建语法如下:

  $soap->user_function($params);

  其中,$soap是一个SoapClient对象,user_function是服务器端要调用的函数,$params

  是要传入函数的参数。

  3、SoapFault

  SoapFault用于生成soap访问过程中可能出现的错误。创建一个soapFault对象的语法格式

  如下:

  $fault = new SoapFault($faultcode,$faultstring);

  其中,$faultcode是用户定义的错误代码,$faultstring是用户自定义的错误信息。soapFault

  对象会在服务器端页面出现错误时自动生成,或者通过用户自行创建SoapFault对象时生成。对于

  Soap访问时出现的错误,客户端可通过捕捉SoapFalut对象来获得相应的错误信息。

  在客户端捕获SoapFault对象后,可以通过下面的代码获得错误代码和错误信息。

  $fault->faultcode;//错误代码

  $fault->faultstring;//错误信息

  其中,$fault是在前面创建的SoapFault对象。

php用soap创建webservice的更多相关文章

  1. 【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter对SOAP协议性能测试脚本开发

    目录: 创建WebService接口模拟服务端 下载SoapUI 新建MathUtil.wsdl文件 创建一个SOAP项目 接口模拟服务端配置以及启动 JMeter对SOAP协议性能测试脚本开发 [阐 ...

  2. 利用JDK(1.6及以上版本)创建WebService

    一.什么是WebService WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络 ...

  3. 如何使用C#创建WebService

    使用C#创建WebService,服务端的webservice是必须,中间的soap,Xml我们不用去关心.下面是使用C#创建WebService的简单介绍. AD:51CTO技术沙龙 | 赋予APP ...

  4. 【转】SoapUI5.0创建WebService接口模拟服务端

    原文:http://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 MathU ...

  5. 一个php创建webservice,并通过c#调用的真实实例

    最近需要用php创建webservice供C#和JAVA来调用,通过3天的搜索和尝试,终于成功在C#下调用,JAVA的调用还没开始,为防止忘记,在这里记录下来全过程. 本文参考了许多文章,文中也采用了 ...

  6. THINKPHP3.2 中使用 soap 连接webservice 解决方案

    今天使用THINKPHP3.2 框架中开发时使用soap连接webservice 一些浅见现在分享一下, 1.首先我们要在php.ini 中开启一下 php_openssl.dll php_soap. ...

  7. gsoap创建webservice服务简单教程

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] WebServicesoapgsoap 使用gsoap创建webservice服务 下载gsop 准备待导出的服务接口定义文件比 ...

  8. python发布及调用基于SOAP的webservice

    现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...

  9. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...

随机推荐

  1. [AaronYang]C#人爱学不学[4]

    本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...

  2. Javascript基础系列之(三)数据类型 (数值 Number)

    javascript中想限定一个数的数值,无需限定它是整数还是浮点数型 var num1 = 80 ; var num2 = 55.51; var num3 = -34; var num4 = 9e5 ...

  3. WPF中资源引用方式汇总

    在WPF应用程序开发中,总是难以记住各种访问资源的方法,遂逐一记下. 先从资源是否编译到程序集分类 一.程序集资源 资源在编译的时候嵌入到程序集中.WPF中的XAML会被编译为BAML,图片等其他资源 ...

  4. 阿里百川IMSDK--自定义群聊界面

    // 获取群对象 YWTribe *tribe = [self.tribesArray objectAtIndex:indexPath.row]; // 发起群聊 UIViewController * ...

  5. chromiun 学习《一》

    众所周知,Chrome是建立在开源的Chromium项目上的. 而且不得不说,学习并分析开源项目的代码对一个程序员的提高确实蛮大的.这篇博文我会记录一下学习过程中我遇到的一些问题,并分享学习中我所参考 ...

  6. RAID 磁盘状态为foreign,怎么变成ready

    我们在关掉电源,插入三块硬盘,打开电源 这时候: 首先启动服务器,出现[Press<ctrl><R>to Run Configuration Utility]提示时,按下ctr ...

  7. maven中Rhino classes (js.jar) not found - Javascript disabled的处理

    想使用单元测试 来测一下服务请求,于是想到了使用Junit,查了一下,决定使用 HttpUnit 来发送请求 于是在maven中引入了 <dependency> <groupId&g ...

  8. 【kAri OJ620】winoros的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 winoros 是一个热爱大自然的萌妹子,在植树节的时候,她打算带着集训的朋友们一起去种树. 到了种树的地方,学校给了她们四个不可弯曲. ...

  9. 【Gym 100712B】Rock-Paper-Scissors

    题 题意 对给定的对手的出拳顺序,如果只能按几个R,然后几个P,再几个S的顺序出拳(几个也可以是0个),那么求赢的方法有多少种. 分析 我原来想枚举P开始的位置和S开始的位置然后算得分,但是超时了o( ...

  10. BZOJ-3226 校门外的区间 线段数+拆点(类似的思想)

    shabi题....bzoj关键字检查freopen??可怕,,1A的卡了一小时.... 3226: [Sdoi2008]校门外的区间 Time Limit: 10 Sec Memory Limit: ...