代码之家  ›  专栏  ›  技术社区  ›  Maarten Raaijmakers

Lumen+Guzzle的API调用提供了错误的数组到字符串转换

  •  1
  • Maarten Raaijmakers  · 技术社区  · 7 年前

    我想打电话 https://api.binance.com/api/v3/ticker/price 作为一个json对象,我一直 数组到字符串的转换 当我使用json\U解码时。我做错了什么?

    <?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 回复  |  直到 7 年前
        1
  •  2
  •   Mathew Tinsley    7 年前

    这个 getBody 方法不会返回字符串,而是返回流。

    尝试:

    $this->client->get('v3/ticker/price')->getBody()->getContents()
    
        2
  •  0
  •   patricus    7 年前

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

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