回首页

PHP SOAP 使用

什么是 SOAP

SOAP是简单对象访问协议的首字母缩写。它是一种基于XML的消息传递协议,用于在计算机之间交换信息。SOAP是XML规范的一个应用程序。 SOAP是一种旨在通过Internet进行通信的通信协议。

SOAP 服务端

server.php

<?php

class server
{
    public function __construct()
    {

    }

   //用于登陆验证
    public static function authenticate($header_params)
    {
        if($header_params->user_name =='jc91715'&&$header_params->password=='jc91715') return true;

        else throw new SoapFault('Wrong user/pass',401);
    }
    //客户端将要调用的方法
    public function getStudentName($id_array)
    {
        //$id_array 可拿到参数去请求数据库
        return 'hello world';
    }
}
$params = array('uri'=>'soap/server.php');
$server = new SoapServer(null,$params);
$server->setClass('server');
$server->handle();

SOAP 客户端

client.php

<?php

class client
{
    private $instance;

    public function __construct()
    {
        $params = array('location'=>'http://soap.work/server.php','uri'=>'soap.work/server.php','trace'=>true);
        $this->instance = new SoapClient(null,$params);

        //authenticate 验证
        $auth_params = new stdClass();
        $auth_params->user_name = 'jc91715';
        $auth_params->password = 'jc9171';
        $head_params = new SoapVar($auth_params,SOAP_ENC_OBJECT);
        $header = new SoapHeader('codev','authenticate',$head_params,false);
        $this->instance->__setSoapHeaders(array($header));

    }

    public function getName($id_array)
    {
        return $this->instance->__soapCall('getStudentName',$id_array);
    }
}

$client = new client();

使用

service.php

<?php

include './client.php';

$id_array = array('id'=>1);

echo $client->getName($id_array);

访问 http://soap.work/service.php soap.work 替换为你自己的虚拟域名 file

了解过后,有一个laravel soap包,可供参考