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

Posted

技术标签:

【中文标题】使用 Lumen + Guzzle 的 API 调用提供错误数组到字符串的转换【英文标题】:API Call with Lumen + Guzzle gives error Array to string conversion 【发布时间】:2018-05-31 07:29:19 【问题描述】:

我试图将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;
    

【问题讨论】:

您的代码中究竟是哪一行抛出了Array to string conversion 【参考方案1】:

guzzle 响应上的 getBody 方法不返回字符串,而是返回流。

试试:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于使用 Lumen + Guzzle 的 API 调用提供错误数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章

base_uri 不是基于 guzzle 客户端实例化的

学习如何使用 Guzzle 从 API 访问数据

如何使用Curl将这个mailchimp API请求转换为使用PHP的Guzzle?

对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效

laravel 客户端 api 与 guzzle

使用 Guzzle 将数据和文件一起发布到 Laravel API