重新封装zend_soap实现http连接安全认证的php代码 |
复制代码 代码如下: <?php class MyFramework_Soap_server extends Zend_Soap_Server { protected $_login = ; protected $_password = ; public function __construct($wsdl = null, array $options = null) { parent::__construct($wsdl,$options); if(isset($options[login])){ $this->_login=$options[login]; $this->_password=$options[password]; $this->_authenticate(); } } private function _authenticate(){ $this->setAuthenticate($this->_login,$this->_password); } public function setHttpLogin($login){ $this->_login=$login; } public function setHttpPassword($password){ $this->_password=$password; if(isset($this->_login)){ $this->_authenticate(); } } public function setAuthenticate($login,$password){ if ($_SERVER[PHP_AUTH_USER]!=$login || $_SERVER[PHP_AUTH_PW]!=$password) { header(WWW-Authenticate: Basic realm="MyFramework Realm"); header(HTTP/1.0 401 Unauthorized); echo "You must enter a valid login ID and password to access this resource.\n"; exit; } } } ?> 复制代码 代码如下: <?php class Soap_server_test { public $view = ; public $params = ; public $requestObj = ; public $dbObj = ; function __construct() { $this->view = $GLOBALS[view]; $this->params = $GLOBALS[params]; $this->requestObj = $GLOBALS[requestObj]; $this->dbObj = $GLOBALS[dbObj]; } function indexAction(){ if(isset($_GET[wsdl])) { $autodiscover = new MyFramework_Soap_AutoDiscover(); $autodiscover->setClass(Model_Service_SoapClassSetTest); $autodiscover->handle(); exit; } else { //$options= array(encoding => UTF-8,login=>tangjian,password=>123456); $options= array(encoding => UTF-8); $soap = new MyFramework_Soap_Server("http://tj.MyFramework.com/default/soap_server_test/index?wsdl",$options); $soap->setHttpLogin(tangjian); $soap->setHttpPassword(123456); $soap->setClass(Model_Service_SoapClassSetTest); $soap->handle(); exit; } } function clientAction() { //$options= array(encoding => UTF-8,login=>tangjian,password=>123456, // compression =>SOAP_COMPRESSION_GZIP); $options= array(encoding => UTF-8, compression =>SOAP_COMPRESSION_GZIP); $client = new MyFramework_Soap_Client(http://tj.MyFramework.com/default/soap_server_test/index?wsdl,$options); $client->setHttpLogin(tangjian); $client->setHttpPassword(123456); $result=$client->getPass(tang,"man"); print_r($result); } } ?> |