欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

PHP SOAP 教程 实例 基础篇 经自己测试 有大用 有大大用

先安装soap,我用的是php7。

  1. sudo yum install install php70w-soap

把soap加入php中

  1. cd /etc/php.d/

  2. sudo cp zip.ini soap.ini

  3. sudo vim soap.ini

把extension=soap.so写入soap.ini

  1. sudo systemctl restart php-fpm

  2. php -m | grep soap    #安装好了

为了公开接口,被其他的应用程序调用,经常需要创建SOAP端,而在PHP中,SOAP的使用自从PHP4就有了广泛的使用,开源的例如nosoap都是很不错的SOAP类,在PHP5开始,就已经支持SOAP了,在php_soap.dll(如果需要,请确定你的PHP5+的PHP.INI的SOAP扩展是打开的,并在phpinfo()中可以看到SOAP扩展。)

SOAP的使用有三个步骤:

1:创建您需要真正执行的程序,返回为一函数,例如需要查询当前的时间,我们创建获取目前时间的函数(可创建保存在soapfunction.php)

  1. function GetTime(){

  2.    return date('Y-m-d',time());

  3. }

2:然后创建一个SOAPServer(可以创建于soaps.php):

  1. include_once('soapfunction.php');

  2. $soap = new SoapServer(null,array('uri'=>"http://www.shaohualee.com/webs/"));

  3. $soap->addFunction('GetTime');

  4. $soap->handle();

以上代码第一行是包含了soap要执行的文件,第二行创建了一个SoapServer类,该类的第一个参数是wsdl,第二个参数是uri,php自带目前不支持自动生成wsdl,这个构造函数如果第一个参数是null,第二个是必填的,第二个参数就是命名空间,这是为了保证互联网WebServer的一致性和开发的一致性而产生的,你可以写入任何你想要的地址,无论存在与否。

3:客户端访问(可以创建soapc.php):

  1. $client = new SoapClient(null, array('location' =>"http://localhost/soap/soaps.php",'uri' => "http://www.shaohualee.com/webs/"));

  2. $reversed = $client->GetTime();

echo “获取到时间是:”.$reversed;

这里第一行市创建一个SoapClent,第一个参数还是wsdl,这里为null,第二个参数中必须包含命名空间(uri),这两个参数都要和需要访问的SoapServer一致,而执行地址(location)为SoapServer的php访问地址。

访问soapc.php,将返回(类似):

获取到时间是:2017-07-04

到此,一个简单的SOAP传递结束了。

本网页示例 

soaps.php

<?php
include_once('soapfunction.php');

$soap = new SoapServer(null, array('uri'=>"http://url-abc"));   //http://url-abc 无所谓,只是为了标识,作为命名空间使用,client(在soapc中) 保持一致就好了

$soap->addFunction('GetTime');

$soap->handle();


soapfunction.php

<?php
function GetTime(){

   return date('Y-m-d',time());

}

soapc.php

<?php
$client = new SoapClient(null, array('location' =>"http://test.dev/soaps.php",'uri' => "http://url-abc"));

$reversed = $client->GetTime();

echo $reversed;


来自  https://shaohualee.com/article/751



普通分类: