2015-06-18 6 views
1

Короче говоря, я хочу создать клиент, который использует HTTP Basic Authentication прямо из каркаса Zend Framework 2.Как начать REST клиент из ZF2 скелета приложения

Клиент должен санкционировать и отправить POST с новое сообщение.

Я начинаю с onscratch (не совсем - у меня есть скелет F2) может кто-нибудь объяснить мне, где мне нужно начинать и как инициировать Zend_Rest_Client?

Edit: Я присмотрелся на переполнение стека и нашли 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(); 
    } 
} 

Приведенный выше код работает, но я хочу, чтобы расширить это модуль для поддержки методов, требующих аутентификации. Как это сделать?

ответ

2

от Zend Http Client поддерживает только основные HTTP authentication, и вы можете легко проверить подлинность своего клиента только перед отправкой запроса, как это:

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

Для более продвинутых механизмов аутентификации, как Oauth2, я настоятельно рекомендую использование какого-то клиента OAuth третьей стороной вместо того, чтобы писать свои собственные. На github существует множество открытых и хорошо написанных клиентских библиотек Oauth2. (for example)

Когда вы захватить маркер доступа/обновления (или идентификатор клиента & секретный ключ) от удаленного поставщика, просто установите эту информацию в объекте запроса, как это:

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

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

Благодарим Вас за участие. метод, о котором вы упомянули, я присоединился к запросу и, наконец, работал. После завершения полного запроса я поставлю php-код, если кто-то окажется в подобной ситуации. – BrutalApple