使用 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 调用提供错误数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Curl将这个mailchimp API请求转换为使用PHP的Guzzle?