2014-04-23 100 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); 
... 

通过这样做,它会使用用户名和密码的变量,他们要访问的页面,每次不询问用户。