【问题标题】:Laravel guzzle Get request to API , interactionLaravel guzzle 获取 API 请求,交互
【发布时间】:2017-04-16 14:26:22
【问题描述】:

我正在尝试向此 API https://api.coinmarketcap.com/v1/ticker/bitcoin/ 发送获取请求,它工作正常,我正在获取对象,但是当我尝试调用对象属性时,它给了我错误:

Undefined property: GuzzleHttp\Psr7\Response::$id

这是我的代码:

$client = new GuzzleHttp\Client(['base_uri' => 'https://api.coinmarketcap.com/v1/ticker/']);
    $response = $client->request('GET', 'bitcoin');  
    return $response->id;;

我真的不知道如何与这个对象交互......

【问题讨论】:

    标签: php laravel api get guzzle


    【解决方案1】:

    Guzzle Response 对象不能以这种方式工作,它不会假定响应内容是什么并代理您对属性的请求。

    您以前可以拨打$response->json(),但由于 PSR-7,您不能再拨打电话了。而是做这样的事情:

    $items = json_decode($response->getBody());
    foreach ($items as $item) {
         echo($item->id);
    }
    

    该端点返回一个对象数组。因此,如果有多个,您需要获取第一个或循环遍历它们。

    注意:如果您在控制器顶部添加命名空间,例如:

    use \GuzzleHttp\Client;
    

    然后,您只需在代码中将其称为 Client 即可:

    $client = new Client(...);
    

    【讨论】:

    • 做到了!谢谢,我会尽快(在 3 分钟内)选择您的答案
    • 我从 web.php 文件中请求只是为了测试它,但是当我从我的控制器尝试它时,它给了我错误 Class 'App\Http\Controllers\GuzzleHttp\Client' not found 即使我只是复制粘贴的代码,我使用了 GuzzleHttp\Client;那你能帮帮忙吗?
    • 我做过,我用过 GuzzleHttp\Client;但还是一样,这让我很困惑
    • use \GuzzleHttp\Client; -- 需要前导斜杠。
    • 还是一样...Class 'App\Http\Controllers\GuzzleHttp\Client' not found
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2023-03-04
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多