zend_soap 实现 web service 用户验证

来源:互联网 发布:微信钱包表结构 mysql 编辑:程序博客网 时间:2024/04/19 22:29

关于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
}
复制代码
分类: Php, ZEND FRAMEWORK(ZF)
原创粉丝点击