【问题标题】:Getting API Response using Guzzle in Laravel在 Laravel 中使用 Guzzle 获取 API 响应
【发布时间】:2020-07-26 19:51:43
【问题描述】:

我正在尝试从 Metals API 获得响应,但即使我可以使用 URL 获取 API,也会不断收到 404 错误。

    public function valueFromApi(){

    $accesskey = "123456";
    $client = new \GuzzleHttp\Client();
    $response = $client->request('POST', 'https://metals-api.com/api/latest', [
        'form_params' => [
            'access_key' => $accesskey,
            'base' => 'GBP',
            'symbols' => 'XAU',]
]);

dd($response);

}

如果我尝试通过浏览器直接访问该 URL,则可行:

https://metals-api.com/api/latest?access_key=123456&base=GBP&symbols=XAU

我一定误解了参数的工作方式。任何建议表示赞赏。

【问题讨论】:

    标签: php laravel guzzle


    【解决方案1】:

    表单参数与查询参数不同。因此,您需要将参数设置为查询。如果您在浏览器中访问它,我不希望它是 POST 而是 GET。

    $response = $client->request('GET', 'https://metals-api.com/api/latest', [
        RequestOptions::QUERY => [
            'access_key' => $accesskey,
            'base' => 'GBP',
            'symbols' => 'XAU',
        ]
    ]);
    

    我正在使用 RequestOptions,这是硬编码字符串选项的语法糖,与“查询”相同。

    【讨论】:

    • 感谢工作,但我还添加了“使用 GuzzleHttp\RequestOptions”
    • 我的答案中隐含的Ofc ;)
    【解决方案2】:

    正如他们的docs所指定的,你需要定义常量

        define("form_params", GuzzleHttp\RequestOptions::FORM_PARAMS );
    

    然后你就可以使用你的代码了

    $response = $client->request('POST', 'https://metals-api.com/api/latest', [
            'form_params' => [
                'access_key' => $accesskey,
                'base' => 'GBP',
                'symbols' => 'XAU',]
    ]);
    

    【讨论】:

      猜你喜欢
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2020-09-28
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多