如何从zf2框架应用程序启动REST客户端

时间:2015-06-18 21:12:53

标签: php zend-framework2 skeleton-code

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

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

从onscratch开始(不完全 - 我有一个骨架F2)可以向我解释我需要开始的地方以及如何启动Zend_Rest_Client吗?

编辑: 我仔细查看了堆栈溢出,发现了similar question

现在我的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();
    }
}

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

1 个答案:

答案 0 :(得分:2)

Zend的Http客户端仅支持基本HTTP authentication,您可以在调度请求之前轻松验证您的客户端,如下所示:

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

对于Oauth2等更高级的身份验证机制,我强烈建议您使用某些第三方oauth客户端库而不是自己编写。 github上有很多开源和编写良好的Oauth2客户端库。 (for example

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

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

$client = new Client();
$response = $client->dispatch($request);