2017-01-23 4 views
2

Я новичок в разработке Symfony, поэтому извините меня, если это глупый вопрос. Я пытаюсь получить данные JSON из внешнего API. Я попытался запустить GET-запрос через Postman и вернул правильные данные в формате JSON, поэтому я знаю, что мой URL-адрес правильный.Используйте Guzzle для HTTP GET для внешнего API с Symfony

Я следующий код, написанный для использования жрать в HTTP GET набора данных JSON из моего внешнего API:

<?php 

namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Request; 
use Psr\Http\Message\ResponseInterface; 
use GuzzleHttp\Client; 

class ScheduleController { 

/** 
* @Route("/schedule") 
*/ 

public function getJobs() { 
    // Create a client with a base URI 
    $client = new GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']); 
    // Send a request to http://my.api.url/site/67/module/1449/item 
    $response = $client->request('GET', 'site/67/module/1449/item'); 
    dump($response); 
} 
} 

Я пытаюсь следовать так близко, как я могу с the Guzzle quick start guide. я получаю 500 ошибка с этого кода: Attempted to load class "Client" from namespace "AppBundle\Controller\GuzzleHttp". Did you forget a "use" statement for e.g. "Symfony\Component\BrowserKit\Client", "Symfony\Component\HttpKernel\Client" or "Symfony\Bundle\FrameworkBundle\Client"?

У меня есть заявление использования для use GuzzleHttp\Client; Что я делаю неправильно? Есть ли более простой способ сделать это?

ответ

2

Эта линия: $client = new GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']);

Должно быть:

$client = new Client(['base_uri' => 'http://my.api.url/']);

или:

$client = new \GuzzleHttp\Client(['base_uri' => 'http://my.api.url/']);

Либо один будет работать, так как вы импортировали пространство имен. Вероятно, вам нужен первый вариант. Когда вы добавляете GuzzleHttp \ Client PHP, это относительное пространство имен, поэтому он говорит, что «AppBundle \ Controller \ GuzzleHttp \ Client» не может быть найден.

+0

Я получил эту ошибку от этого изменения (я использую первую строку кода, которую вы предложили): 'Попытка загрузить класс« Клиент »из пространства имен« GuzzleHttp ». Вы забыли инструкцию «use», например. «Symfony \ Component \ BrowserKit \ Client», «Symfony \ Component \ HttpKernel \ Client» или «Symfony \ Bundle \ FrameworkBundle \ Client»? ' – Liz

+1

Действительно ли вы установили жульничество через композитор? Исходя из этой ошибки, кажется, что жужжание не установлено. –

+0

Я установил его. Есть ли способ устранить установку? – Liz

Смежные вопросы