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. 2、面向对象以及winform的简单运用(面向对象的四大基本特性)

    面向对象的四大基本特性 面向对象的核心概念就是封装.抽象.继承.多态这四大基本特性,在这里先解释一下它们的定义: 封装:是一种隐藏信息的特性.找到变化并且把它封装起来,你就可以在不影响其它部分的情况下 ...

  2. EntityFramework_MVC4中EF5 新手入门教程之六 ---6.通过 Entity Framework 更新关联数据

    在前面的教程中,您将显示相关的数据 :在本教程中,您会更新相关的数据.对于大多数的关系,这个目标是可以通过更新相应的外键字段来达到的.对于多对多关系,实体框架并不直接,暴露联接表,因此您必须显式添加和 ...

  3. 年前辞职-WCF入门学习(1,2)

    前言 周一的时候辞职了,离开了从12年毕业后8月份开始一直到现在的公司. 辞职之后当然是玩.玩了若干天的游戏,真的是没日没夜啊,但是玩的太坑,怒删游戏.话说上次玩还是在14年7月份.下次还是过年回家再 ...

  4. [设计模式]第三回:抽象工厂模式(Abstract Factory)

    概述 在系统中往往会有这种需求,客户端会用到很多对象,而且根据需求变化很可能会切换成另外一套对象.抽象工厂模式可以提供一种封装机制来面对这种需求. 实践 物理模型: 皮肤主题:设计一个可以切换皮肤主题 ...

  5. c# 通过反射获取私有方法

    class Program { static void Main(string[] args) { //通过反射来调私有的成员 Type type = typeof(Person); //Bindin ...

  6. [转]Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  7. bzoj 1222 DP

    用w[i]表示在A中用了i的时间时在B中最少用多长时间,然后转移就可以了. 备注:这个边界不好定义,所以可以每次用一个cur来存储最优值,然后对w[i]赋值就可以了. /*************** ...

  8. javascript自动转换大小写

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  9. 从js的repeat方法谈js字符串与数组的扩展方法

    js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { ...

  10. Spring学习8-SSH+Log4j黄金整合

    最下面有log4j的详解及配置步骤 步骤一.导入相应的jar包(具体参看下一篇博文) 步骤二.修改WEB.XML文件,内容如下: <?xml version="1.0" en ...