免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2825 | 回复: 0
打印 上一主题 下一主题

使用 php 调用 soap 接口(无WSDL文件) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-26 22:08 |只看该作者 |倒序浏览
    使用 php 调用 soap 接口

为了公开接口,被其他的应用程序调用,经常需要创建SOAP端,而在PHP中,SOAP的使用自从PHP4就有了广泛的使用,开源的例如nosoap都是很不错的SOAP类,在PHP5开始,就已经支持SOAP了,在php_soap.dll(如果需要,请确定你的PHP5+的PHP.INI的SOAP扩展是打开的,并在phpinfo()中可以看到SOAP扩展。)
SOAP的使用有三个步骤:   
1:创建您需要真正执行的程序,返回为一函数,例如需要查询当前的时间,我们创建获取目前时间的函数(可创建保存在soapfunction.php):

?php
function GetTime(){
     return date('Y-m-d',time());
}
?>

2:然后创建一个SOAPServer(可以创建于soaps.php):
?php
include_once('soapfunction.php');
$soap = new SoapServer(null,array('uri'=>"http://www.eol.cn/"));
$soap->addFunction('GetTime');
$soap->handle();
?>
以上代码第一行是包含了soap要执行的文件,第二行创建了一个SoapServer类,该类的第一个参数是wsdl,第二个参数是uri,php自带目前不支持自动生成wsdl,这个构造函数如果第一个参数是null,第二个是必填的,第二个参数就是命名空间,这是为了保证互联网WebServer的一致性和开发的一致性而产生的,你可以写入任何你想要的地址,无论存在与否。
3:客户端访问(可以创建soapc.php)

?php
$client = new SoapClient(null, array('location' =>"http://s/test/soap/soaps.php",'uri'=>"http://www.eol.cn/"));
$reversed = $client->GetTime();
echo "获取到时间是:".$reversed;
?>

这里第一行是创建一个SoapClent,第一个参数还是wsdl,这里为null,第二个参数中必须包含命名空间(uri),这两个参数都要和需要访问的SoapServer一致,而执行地址(location)为SoapServer的php访问地址。
访问soapc.php,将返回(类似):  
获取到时间是:2008-04-08
到此,一个简单的SOAP传递结束了。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104997/showart_2079179.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP