提问者:小点点

guzzlehttp和symfony与rest api问题


我想在symfony中使用guzzlehttp使用RESTAPI进行post调用
我写了这段代码,但是响应

/**
 * @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]请求。关键:未捕获的PHP异常Twig_Error_运行时:“在呈现模板期间引发了异常(“可捕获的致命错误:GuzzleHttp\Psr7\Response类的对象无法转换为字符串”)。”在/app/app/Resources/views/estene/post。html。细枝行1{“异常”:“[object](细枝错误运行时(代码:0):在呈现模板期间引发异常(\“可捕获致命错误:GuzzleHttp\Psr7\Response类的对象无法转换为字符串\”)。at/app/app/Resources/views/estene/post.html。细枝:1,错误异常(代码:0):可捕获致命错误:GuzzleHttp\Psr7\Response类的对象无法转换为/app/var/cache/prod/twig/47/478CA9F9B0A5C69CAA7B0FED874BF8314662307635F396F057DC2C33868549处的字符串。php:23)“}[]

解决方案

使用文件

{{ response|json_encode()|raw }}

细枝末节

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

共1个答案

匿名用户

您可以尝试以下响应。

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