zoukankan      html  css  js  c++  java
  • zend_soap 实现 web service 用户验证

    关于zend_soap如何来进行web service就不多说了

    详见http://www.cnblogs.com/zcy_soft/archive/2011/01/10/1932177.html

    参考代码:http://download.csdn.net/source/2967369

    这个帖子重点讲讲如何用 zend_soap 框架来进行用户验证

    必要前提懂的参考代码中的内容

    原理:客户端访问服务器,首先发出soapheader信息,先进行验证,如果soapheader中的内容是正确的,

       那么将会改变服务器端改成已经授权,否则就跑出错误

    考代代码

    客户端SoapController.php  访问地址:http://test.localhost:8080/soap/client

    注意:发送的SoapHeader里面,

     "userConfirmation"   :接受soapheader并处理的方法

    array("test","888888") :给处理soapheader方法的两个参数

    代码
    $client = new Zend_Soap_Client("http://tools.localhost:8080/soapserver/index?wsdl");
    $soapUri = $this->_WSDL_URI;
    $client->addSoapInputHeader(
    new SoapHeader(
    $soapUri,
    "userConfirmation",
    array("test","888888")
    )
    );
    $xmlConente = file_get_contents('C:\TestPhp\public\t3.xml');
    echo $client->SyncCrawlerCV($xmlConente);die;

    服务器端 SoapserverController.php   wsdl访问地址:http://tools.localhost:8080/soapserver/index?wsdl

    注意:

    代码
    private function handleWSDL() {
    $autodiscover = new Zend_Soap_AutoDiscover();
    //类名要注意一致
    $autodiscover->setClass('Dhr_SoapService');
    $autodiscover->handle();
    }

    private function handleSOAP() {
    $soap = new Zend_Soap_Server('http://tools.localhost:8080/soapserver/index?wsdl');
    $soap->setClass('Dhr_SoapService');
    $soap->handle();
    }

    public function indexAction() {
    //判断请求中是否有wsdl有就自动生成wsdl的uri否则启动soap服务
    if (isset($_GET['wsdl'])) {
    $this->handleWSDL();
    }
    else {
    $this->handleSOAP();
    }
    }

    服务器端关键代码

    代码
    class Dhr_SoapService {
    public $authorized = false;
    //other param

    /**
    * a main function can be sync crawler cv
    * @param string $XMLString
    * @return string
    */
    public function SyncCrawlerCV($XMLString) {
    $this->xmlMessageObj = new xmlMessage();
    if(!$this->authorized){
    $this->xmlMessageObj->createSon('exceptions', 'No login!');
    return $this->xmlMessageObj->getXML();
    }
    //do something
    }
    /**
    * method for user comfirmaation
    * @param string $userInfo
    */
    public function userConfirmation($userName, $passWord){
    if($userName =='test' && $passWord == '888888'){
    $this->authorized = true;
    }
    }
    //other function s
    }
  • 相关阅读:
    用mkdirs创建目录
    关于布局(Layout)的一切
    用HTTP操作和文件操作把网页下载到sd卡
    OpenStack计费项目Cloudkitty系列详解(一)
    OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念
    python-RabbitMQ
    1go基本语法
    openstack多region配置
    cinder 挂载卷和 iSCSI原理
    Host aggregate分区
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1946195.html
Copyright © 2011-2022 走看看