使用Lumen + Guzzle进行API调用会将错误数组转换为字符串转换

时间:2017-12-17 22:56:52

标签: json laravel curl guzzle lumen

我试图将https://api.binance.com/api/v3/ticker/price作为json对象调用,但是当我使用json_decode时,我不断地将数组转换为字符串转换。我在这里做错了什么?

<?php namespace App\Helpers;

use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;

class Ticker
{
    private $client;

    public function __construct()
    {
        $this->client = new Client(['base_uri' => 'https://api.binance.com/api/']);
    }

    public function update()
    {

        $response = json_decode($this->client->get('v3/ticker/price')->getBody());
        return $response;
    }
}

2 个答案:

答案 0 :(得分:2)

guzzle响应的getBody方法不返回字符串,它返回一个流。

尝试:

$this->client->get('v3/ticker/price')->getBody()->getContents()

答案 1 :(得分:0)

json_decode将guzzle响应字符串转换为php数组。然后,您将从控制器方法返回该数组。无论您从控制器返回什么,Laravel都会尝试将其转换为字符串。由于您已经返回了一个数组,因此您将获得数组到字符串转换错误。

要么不解码guzzle响应,要么将其转换为字符串或其他你想要的响应。