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. RockWare RockWorks的Ollydbg调试过程及注册机(破解)思路

    最近拿到了RockWorks15的安装包,可惜没有破解,试用也只能用14天.用PEiD工具察看了一下,Delphi编写的程序,竟然没加壳.本想用OllyDBG调试进去爆破一下,不意发现注册码很简单,如 ...

  2. [USACO2005][POJ3045]Cow Acrobats(贪心)

    题目:http://poj.org/problem?id=3045 题意:每个牛都有一个wi和si,试将他们排序,每头牛的风险值等于前面所有牛的wj(j<i)之和-si,求风险值最大的牛的最小风 ...

  3. AngularJS - 路由入门

    我们有很多方法让一个视图随着用户的操作进行变化. 但是,只是单单一个视图就要满足所有的需求会让代码变得非常复杂. 也许我们可以使用ng-include来引用各种模板,但这只限于部分场景. 于是我们可以 ...

  4. angular学习-入门基础

    angular .caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #00 ...

  5. oracle 分区表

    分区表用途 分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明.Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间 ...

  6. 使用gitlab+jenkins+saltstack+rsync自动部署Web应用

    转载:http://www.ithao123.cn/content-8128849.html

  7. 在windows 下使用git

    首先安装好在windows下的linux模拟交互器 这里我选择的是cygwin 这里我是参考:http://book.51cto.com/art/201107/278731.htm 这里还要注意我这里 ...

  8. JS高级设计第七章——复习知识点

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. [IOS Block和delegate的对比]

    原文:http://blog.sina.com.cn/s/blog_9e8867eb0102uykn.html 这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东. 委托和bloc ...

  10. crossdomain.xml的配置详解

    目录 1 简介 2 crossdomain.xml的配置详解 3 总结 1 简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及 ...