2

简而言之,我想直接从 Zend Framework 2 的框架中创建一个使用 HTTP 基本身份验证的客户端。

客户端必须授权并使用新消息发送 POST。

我从头开始(不完全——我有一个骨架 F2)有人可以向我解释我需要从哪里开始以及如何启动 Zend_Rest_Client 吗?

编辑:我更仔细地查看了堆栈溢出并发现了一个类似的问题

现在我的 IndexController.php 文件如下所示:

<?php 
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

use Zend\Http\Request;
use Zend\Http\Client;
use Zend\Stdlib\Parameters;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
         $request = new Request();
         $request->getHeaders()->addHeaders(array(
           'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
         ));
         $someurl="http://apiurl/public_timeline.json";
         $request->setUri($someurl);
         $request->setMethod('GET');
         $request->setPost(new Parameters(array('page' => 1)));

         $client = new Client();
         $response = $client->dispatch($request);
         $data = json_decode($response->getBody(), true);

         print_r($data);

         return new ViewModel();
    }
}

上面的代码有效,但我想扩展这个模块以支持需要身份验证的方法。怎么做?

4

1 回答 1

3

Zend 的 Http 客户端只支持基本的HTTP 身份验证,您可以在发送请求之前轻松地对客户端进行身份验证,如下所示:

$client = new Client();
$client->setAuth('username', 'password');
$response = $client->dispatch($request);

对于像Oauth2这样更高级的身份验证机制,我强烈建议使用一些 3rd 方 oauth 客户端库,而不是自己编写。github 上有很多开源且编写良好的 Oauth2 客户端库。(例如

当您从远程提供程序获取访问/刷新令牌(或客户端 ID 和密钥)时,只需在您的请求对象中设置此信息,如下所示:

$request->getHeaders()->addHeaders(array(
    'Accept' => 'application/json',
    'Authorization' => 'Bearer 1234567890abcdefghxxxx', // access token
));

$client = new Client();
$response = $client->dispatch($request);
于 2015-06-20T08:32:25.050 回答