2014-04-23 143 views
3

我目前正在使用Zend Framework在PHP中使用REST客戶端,並遇到問題。基本訪問身份驗證標頭

我目前有兩個虛擬服務,我正在測試;一個是'noauth',它不需要認證,只是返回一些JSON,另一個是'auth',它需要認證並返回更具體的JSON。包括直接從網絡訪問就沒有這個問題,例如導航到「https://example.org/example/dummy/noauth」顯示JSON上的網頁和「https://example.org/example/dummy/auth」顯示一個對話框,要求用戶登錄。

我的目標是能夠從我的主Web應用程序訪問這些不同的服務。首先需要用戶登錄到此Web應用程序。然後他們將能夠從該Web應用程序調用不同的服務。我能得到NOAUTH很容易的工作使用這個:

$base_url = 'https://example.org'; 
$client = new Zend_Rest_Client($base_url); 
$endpoint = '/example/dummy/noauth'; 
$response = $client->restGet($endpoint); 

但我無法得到「權威性」一個工作沒有它要求每次用戶的用戶名和密碼。目前,我爲此使用硬編碼值,但最終它將是用戶登錄時存儲在會話中的值。下面是一些我嘗試過的事情:

$user = base64_encode('username:password'); 
$client->setHeaders('Authorization: Basic '.$user); 

而且也:

$client = new Zend_Http_Client(); 
$client->setAuth('username', 'password', Zend_Http_Client::AUTH_BASIC); 

這些都不似乎工作。有沒有人有任何想法如何實現我所需要的?

+0

可能重複[可能使用Zend \ _Http \ _Client()和Zend \ _Rest \ _Client()一起](http://stackoverflow.com/questions/23342224/possible-to-use-zend-http-客戶端和Zend的休息,客戶一起) – user3409662

回答

1

您必須調用REST對象上的getHttpClient(),然後調用通常在Zend_Http_Client()之後所需的函數。

這裏有一個簡單的例子:

$client = new Zend_Rest_Client($base_url); 
$client->getHttpClient()->setAuth($username, $password, Zend_Http_Client::AUTH_BASIC); 
... 

通過這樣做,它會使用用戶名和密碼的變量,他們要訪問的頁面,每次不詢問用戶。