本文主要介绍了soap在PHP中的使用,并结合实例分析了SoapServer服务器和SoapClient客户端的相关实现技巧和操作注意事项。有需要的可以参考一下。
这篇文章展示了soap在PHP中的用法。分享给你,供你参考,如下:
一、首先要设置服务器环境
修改php.ini
Add extension=php_soap.dll(加载soap内置包)
将soap.wsdl_cache_enabled=1更改为soap.wsdl_cache_enabled=0。这是肥皂的储藏处。测试的时候最好改成0,在线稳定的时候改成1。
soap有两种模式:wsdl和非wsdl。
二、熟悉几个函数
1. SoapServer
SoapServer用于定义在创建php服务器页面时可以调用并返回响应数据的函数。
格式:
$soap=new SoapServer($wsdl,$ array);
其中,$wsdl是soap使用的wsdl文件,wsdl是描述Web服务的标准格式。如果$wsdl设置为null,则意味着不使用wsdl模式。
$array是SoapServer的属性信息,是一个数组。
SoapServer对象的addFunction方法用于声明客户端可以调用哪个函数。语法格式如下:
$ soap-add function($ function _ name);
其中$soap是SoapServer对象,$function_name是要调用的函数的名称。
SoapServer对象的handle方法用于处理用户输入并调用相应的函数,最后将处理结果返回给客户端。语法如下:
$ soap-handle([$ soap _ request]);
其中,$soap是SoapServer对象,$soap_request是可选参数,用于表示用户的请求信息。如果没有指定$soap_request,这意味着服务器将接收来自用户的所有请求。
2. SoapClient
SoapClient用于调用远程服务器上的SoapServer页面,并调用相应的函数。
格式:
$soap=new SoapClient($wsdl,$ array);
参数$wsdl和$array与SoapServer相同。
SoapClient的方法,创建语法如下:
$ soap-user _ function($ params);
其中$soap是SoapClient对象,user_function是要在服务器端调用的函数,而$params是要传入函数的参数。
3. SoapFault
SoapFault用于生成在soap访问期间可能发生的错误。创建soapFault对象的语法格式。
格式:
$fault=new SoapFault($faultcode,$ fault string);
其中$faultcode是用户定义的错误代码,$faultstring是用户定义的错误消息。当服务器端页面出现错误,或者用户自己创建soapFault对象时,会自动生成SoapFault对象。对于Soap访问中的错误,客户端可以捕获SoapFalut对象来获取相应的错误信息。客户端捕获SoapFault对象后,可以通过下面的代码获取错误代码和信息。
$ fault-fault code;//错误代码
$ fault-fault string;//错误消息
其中$fault是前面创建的SoapFault对象。
4. SoapHeader
Soapheader用于描述soap的头部信息,一般用于认证。
/*
*SoapHeader参数描述如下:
* *'http://tempuri.org/'命名空间(可以省略命名空间)
*“我的soap头”soap头的类名。
*”数组(.)”存储标识身份的字符串参数。
*'true '是否必须处理标头?
*/
格式:
$ h=new SOAP header(' http://192 . 168 . 0 . 153/Hao/',' auth ',' 123456789 ',false,SOAP _ ACTOR _ NEXT);
三、实例
没有wsdl模式的代码
服务端:
//认证服务器
类别测试{
公共函数auth($a)
{
如果($a!='123456789'){
抛出新的SoapFault('Server ','您没有访问权限');
}
}
函数say()
{
返回“hi 11111”;
}
}
$srv=new SoapServer(null,array(' uri '=' http://192 . 168 . 0 . 153/Hao ');
$ SRV-set class(' Test ');
$ SRV-handle();
Test类中的Auth进行认证判断,这个方法对应客户端soapheader中的方法。
客户端:
//加密客户端
$cli=new SoapClient(null,array(' uri '=' http://192 . 168 . 0 . 153/Hao/',' location '=' http://192 . 168 . 0 . 153/Hao/test . PHP ',' trace'=true,' encoding '=' utf-8 '));
$ h=new SOAP header(' http://192 . 168 . 0 . 153/Hao/',' auth ',' 123456789 ',false,SOAP _ ACTOR _ NEXT);
$ CLI-_ _ setSoapHeaders(array($ h));
尝试{
echo $ CLI-say();
} catch(异常$e) {
echo $ e-getMessage();
}
soapheader中作家(作者的简写)对应服务端作家(作者的简写)方法
如果不认证,可以去掉下面这两行:
$ h=新的SOAP标头(' http://192。168 .0 .153/Hao/',' auth ',' 123456789 ',false,SOAP _ ACTOR _ NEXT);
$ CLI-_ _ setSoapHeaders(array($ h));
wsdl模式
首先老师成wsdl文件,至于怎么生成网站很多
服务端:
//wsdl服务端
需要. 5/服务器。班级。PHP ';
$服务器=新的SoapServer(./服务器。wsdl’);
$ Server-set类(' Server ');
$ server-handle();
server.class.php类代码
类别服务器{
公共函数auth($a){
如果($a!='123456789'){
抛出新的SoapFault('服务器','您无权访问');
}
}
公共函数测试(){
返回'你在测试;
}
}
客户端:
//wsdl文件客户端
$ soap=新的soap客户端(' http://192。168 .0 .153/号/服务器。wsdl’);//如果是远程,那当然写dizzylion.wsdl的统一资源定位器了。
$ h=新的SOAP标头(' http://192。168 .0 .153/Hao/',' auth ',' 123456789 ',false,SOAP _ ACTOR _ NEXT);
$ soap-_ _ setSoapHeaders(array($ h));
尝试{
echo $ soap-test();
} catch(异常$e) {
echo $ e-getMessage();
}
更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《php socket用法总结》 、 《php字符串(string)用法总结》 、 《PHP数学运算技巧总结》 、 《php面向对象程序设计入门教程》 、 《PHP数组(Array)操作技巧大全》 、 《PHP数据结构与算法教程》 、 《php程序设计算法总结》 及《PHP网络编程技巧总结》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。