php的webservice的soapheader认证问题
參數通過類傳輸:
class authentication_header { ?
?? ? private $username; ?
?? ? private $password; ?
?? ? public function __construct($username, $password) { ?
?? ??? ? $this->username = $username; ?
?? ??? ? $this->password = $password; ?
?? ? } ?
}?
服務端:
$wsdl_path = FCPATH.'wsdl/user.wsdl';
$s = new SoapServer($wsdl_path,array('actor' => 'user'));
$s -> setClass("user");
$s -> handle();
客戶端:$wsdl_path = 'http://api.mypharma.com/wsdl/user.wsdl';
$authvalues = new authentication_header('liu','1234456');
$header = new SoapHeader('urn:Solsoft_user', 'Authentication', $authvalues, false, 'user');
$client = new SoapClient($wsdl_path,array('trace'=>1));
$client->__setSoapHeaders(array($header));
$a = $client->status(1);
紅色是服務類的認證方法名稱
服務類:
class user
{
?? ?public $rootPath;
?? ?public $Authenticated;
?? ?public $username;
?? ?public $password;
?? ?function __construct()
?? ?{
?? ??? ?$this->rootPath=dirname(__FILE__);
?? ??? ?require_once $this->rootPath.'/lib/db_class.php';
?? ??? ?require_once $this->rootPath.'/model/api_base_model.php';
?? ?}
?? ?public function Authentication($username,$password)
?? ?{ ?
?? ??? ?$this->username =$username;
?? ??? ?$this->password =$password;
?? ??? ? if($this->username == 'liumeng' && $this->password == '123456'){
?? ??? ??? ?$this->Authenticated = true; ?
?? ??? ? } else { ?
?? ??? ??? ?$this->Authenticated = false;? ?
?? ??? ? }
?? ?}
?? ?
?? ?public function status($id)
?? ?{
?? ??? ?if($this->Authenticated){
?? ??? ??? ?require_once $this->rootPath.'/model/member_model.php';
?? ??? ??? ?$member_model =? new Member_Model();
?? ??? ??? ?$a = $member_model->get_data_by_id($id);
?? ??? ??? ?return json_encode($a);
?? ??? ?}else{
?? ??? ??? ?return json_encode(array('error'=>'wrong username or password!'));
?? ??? ?}
?? ?}
}
紅色是傳遞參數的核心,我試了好長時間才正確,報了N次沒有參數的錯誤,其實還可以通過獲取所有輸入參數分析得到。
轉載于:https://www.cnblogs.com/kudosharry/p/3262121.html
總結
以上是生活随笔為你收集整理的php的webservice的soapheader认证问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: s11盲僧打野出装顺序 瞎子出什么装备
- 下一篇: define 的全部使用方法