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
    }
  • 相关阅读:
    python中RabbitMQ的使用(远程过程调用RPC)
    python中RabbitMQ的使用(交换机,广播形式)
    python中RabbitMQ的使用(路由键模糊匹配)
    python中sys.argv[]的使用
    python中RabbitMQ的使用(路由键)
    操作远程RabbitMQ
    python中RabbitMQ的使用(工作队列)
    python中RabbitMQ的使用(安装和简单教程)
    python中eval()和json.dumps的使用
    python使用MySQLdb模块连接MySQL
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1946195.html
Copyright © 2011-2022 走看看