使用Guzzle的Laravel中存在多个HTTP请求问题

使用Guzzle的Laravel中存在多个HTTP请求问题,laravel,api,httprequest,guzzle,guzzle6,Laravel,Api,Httprequest,Guzzle,Guzzle6,我使用的是Guzzle版本6.3.3。我想从外部API发出多个HTTP请求。下面显示的代码非常适合我。这只是一个请求 public function getAllTeams() { $client = new Client(); $uri = 'https://api.football-data.org/v2/competitions/2003/teams'; $header = ['headers' => ['X-Auth-Token' => 'MyKey'

我使用的是Guzzle版本6.3.3。我想从外部API发出多个HTTP请求。下面显示的代码非常适合我。这只是一个请求

public function getAllTeams()
{
    $client = new Client();
    $uri = 'https://api.football-data.org/v2/competitions/2003/teams';
    $header = ['headers' => ['X-Auth-Token' => 'MyKey']];
    $res = $client->get($uri, $header);
    $data = json_decode($res->getBody()->getContents(), true);
    return $data['teams'];
}
但现在我想一次提出多个请求。在Guzzle的文档中,我找到了如何实现它,但它仍然不能正常工作。这是我尝试使用的代码

    $header = ['headers' => ['X-Auth-Token' => 'MyKey']];
    $client = new Client(['debug' => true]);
    $res = $client->send(array(
        $client->get('https://api.football-data.org/v2/teams/666', $header),
        $client->get('https://api.football-data.org/v2/teams/1920', $header),
        $client->get('https://api.football-data.org/v2/teams/6806', $header)
    ));
    $data = json_decode($res->getBody()->getContents(), true);
    return $data;
我得到一个错误:

传递给GuzzleHttp\Client::send()的参数1必须实现接口Psr\Http\Message\RequestInterface,给定数组在TeamsController中调用。

如果在每个URI之后删除
$header
,则会出现以下错误:

导致“403禁止”响应:{“消息”:“您正在查找的资源受到限制。请传递一个有效的API令牌,并检查您的订阅(截断的…)

我尝试了几种使用API密钥设置
X-Auth-Token
的方法,但仍然会出现错误,而且我不知道Guzzle有多少其他方法来设置它们


我希望有人能帮助我:)

Guzzle 6对Guzzle 3使用了不同的方法,因此您应该使用类似以下的方法:

use function GuzzleHttp\Promise\all;

$header = ['headers' => ['X-Auth-Token' => 'MyKey']];
$client = new Client(['debug' => true]);
$responses = all([
    $client->getAsync('https://api.football-data.org/v2/teams/666', $header),
    $client->getAsync('https://api.football-data.org/v2/teams/1920', $header),
    $client->getAsync('https://api.football-data.org/v2/teams/6806', $header)
])->wait();
$data = [];
foreach ($responses as $i => $res) {
    $data[$i] = json_decode($res->getBody()->getContents(), true);
}
return $data;
查看同一主题(,)上的不同问题,以查看更多用法示例