php soap详解,关于PHP+SOAP详解

ØSOAP

1.SimpleObjectAccessProtocol简单对象访问协议

主要包括下面四部分:

a)SOAP封装:用于将传输数据中的内容,发送端消息,接收端信息和处理方式等信息封装起来以准备数据传输.

b)SOAP编码规则:用于表示传输数据中各项的数据类型等信息

c)SOAP远程过程调用协定:用于进行远程过程调用及应答的协议

d)SOAP绑定协议:用于表示信息交换的底层协议

ØPHP5中SOAP应用及配置

1.PHP 5中新增了内置的SOAP扩展,我们称之为ext/soap。它是作为PHP的一部分提供的,因此不需要下载、安装和管理单独的包。

2.ext/soap可能已经编译但没有加载,因此需要更新PHP配置,以便加载ext/soap。编辑 php.ini并找到Dynamic Extensions部分,在这里增加一行代码来自动加载该扩展。 在Windows上,这一代码行是:extension=php_soap.dll

如果以前没有加载过任何可选的扩展,可能还要设置extension_dir指令,让它指向包含扩展库(其中包括php_soap)的目录:

extension_dir=”C:/php/ext/”(在Windows上使用正斜杠)

3.完成配置后ext/soap显示为:

[soap]

; Enables or disables WSDL caching feature.

soap.wsdl_cache_enabled=1

; Sets the directory name where SOAP extension will put cache files.

soap.wsdl_cache_dir=”/tmp”

; (time to live) Sets the number of second while cached file will be used

; instead of original one.

soap.wsdl_cache_ttl=86400

这段配置控制了SOAP扩展的WSDL缓存特性。默认情况下,WSDL描述文件在24小时(86400秒)内都缓存在/tmp目录下。现在要设置 soap.wsdl_cache_enabled=0,否则,在开发代码时,您会遇到一些莫名其妙的行为。完成开发之后,要记得打开WSDL缓存,使代码运行得更快。

ØSOAP扩展库(主要包括三种对象)

1.SoapServer:用于在创建PHP服务端页面时定义可被调用的函数及返回响应数据.

格式为: $soap = new SoapServer($wsdl, $array);

说明:$wsdl为SOAP使用的WSDL文件,是描述WebService的一种标准格式.设为NULL表示不使用WSDL模式.如果想用的话可以用ZED生成.

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

注意:$array中包括一个uri,和encoding,如果是客户端程序中还要包含一个location.

其中‘uri‘选项是必须的,但其值可以随便填,可以为空(”),但不可以为null.

‘encoding‘对于中文的处理,是必须的,一般填‘gb2312’(否则会出错,因为默认为‘utf-8’).

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

语法格式为:$soap -> addFunction($function_name);

该对象的handle方法用来处理用户的输入并调用相应的函数,最后返回给客户端处理后的结果,

语法格式为:$soap -> handle([$soap_request]);

说明:$soap_request是一个可选参数,用来表示用户的请求信息,如果不指定,则表示服务器将接收用户的全部请求.

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

语法格式为:$soap = new SoapClient($wsdl, $array);

注意:对于soap client,’location‘和‘uri’选项都是必须的;其中‘location‘必须为soap server的URL,必须准确,但uri似乎可以随便填,不过最好与soap server中的uri一致.而‘encoding‘对于中文用户是必须的

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

语法格式为:$soap -> user_function($params);

说明:user_function是服务器端定义的可以被调用中的函数中的一个或几个函数.

ØSoapFault:用于生成在SOAP访问过程中可能出现的错误.

语法格式为:$fault = new SoapFault($faultcode, $faultstring);

说明:$faultcode是用户自定义的错误代码,如果没有定义的话应该是HTTP(印象中),$faultstring是用户自定义的错误信息.

该对象会在服务器端页面出现错误时自动生成,或者通过用户自行创建SoatFault对象来获得相应的错误信息.

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值