我目前正在使用 Zend Framework 在PHP中使用 REST 客户端并遇到问题。
我目前有两个我正在测试的虚拟服务;一个是'noauth',它不需要身份验证,只返回一些JSON,另一个是'auth',它需要身份验证并返回更具体的JSON。直接从Web访问两者都没有问题,例如导航到'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);
但是我无法让'auth'工作,而不是每次都要求用户的用户名和密码。目前,我正在使用硬编码值,但最终,它将是用户登录时存储在会话中的值。
我发现Zend有一个Zend_Http_Client()
方法,似乎它可以用于我需要的东西,但我无法弄清楚如何将它应用于我的REST。
$client = new Zend_Http_Client();
$client->setAuth('username', 'password', Zend_Http_Client::AUTH_BASIC);
是否有人使用Zend_Rest_Client()
连接到REST,以及Zend_Http_Client()
进行身份验证?
答案 0 :(得分:2)
经过无数个小时,我终于弄明白了!
您必须在REST对象上调用getHttpClient()
,然后在此之后调用Zend_Http_Client()
中通常需要的函数。
这是一个简单的例子:
$client = new Zend_Rest_Client($base_url);
$client->getHttpClient()->setAuth($username, $password, Zend_Http_Client::AUTH_BASIC);
...
希望这可以帮助最终遇到同样问题的其他人。