guzzlehttp и Symfony с проблемой остальных API - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу сделать пост-звонок с оставшимся API, используя guzzlehttp в symfony ...
Я написал этот код, но ответ

/**
 * @Route("/post/")
 */
public function postAction()
{
    $client = new \GuzzleHttp\Client();
    $response = $client->request('POST', $url, [
        'form_params' => [
            'username' => 'test',
            'password' => 'test',
        ]
    ]);

    return $this->render('esterne/post.html.twig', array(
        'response'=>$response,
    ));
}

это файл ветки post.html.twig

{{response}}

результат таков:

{"status":"200","data":{"is_auth":true,"userToken":"194b873c004716acb3e0a5fba09fe405"}}

но если я введу html:

return $this->render('esterne/post.html.twig', array(
    'response'=>$response->getBody(),
));

это приводит к ошибке 500 внутренняя ошибка сервера

[2018-11-14 09:56:35] request.CRITICAL: Uncaught PHP Exception Twig_Error_Runtime: "Возникла исключительная ситуация при рендеринге шаблона (" Catchable Fatal Error: Объект класса GuzzleHttp \ Psr7 \ Response не может быть преобразовано в строку ")." в /app/app/Resources/views/esterne/post.html.twig строка 1 {"исключение": "[объект] (Twig_Error_Runtime (код: 0): во время рендеринга шаблона возникло исключение (\" Catchable Fatal Error: Объект класса GuzzleHttp \ Psr7 \ Response не может быть преобразован в строку \ "). At /app/app/Resources/views/esterne/post.html.twig:1, ErrorException (код: 0): Catchable Неустранимая ошибка: объект класса GuzzleHttp \ Psr7 \ Response не может быть преобразован в строку по адресу /app/var/cache/prod/twig/47/478ca9f9b0a5c69caa7b0fed874bf831466230764635f396f057dc2c338682321 * []

РЕШЕНИЕ

использовать файл

{{ response|json_encode()|raw }}

в веточке и

return $this->render('esterne/post.html.twig', array(
    'response'=>json_decode($response->getBody()->getContents(), FALSE),
));

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете попробовать следующий ответ.

return $this->render('esterne/post.html.twig', array(
    'response'=>$response->getBody()->getContent(),
));
...