Laravel Guzzle不起作用,但Curl可以。

3

我正在使用Guzzle来处理外部API。

我的使用方式如下:

$client = new Client;
$request = $client->request('GET', 'https://api.callrail.com/v1/companies.json', [
    'headers' => [
        'Authorization' => 'Token token="my_api_string"'
    ]
]);

return dd($request);

这是输出结果

Stream {#255 ▼
  -stream: stream resource @280 }
  -size: null
  -seekable: true
  -readable: true
  -writable: true
  -uri: "php://temp"
  -customMetadata: []
}

但是当我只使用像这样的curl
$api_key = 'my_api_string';

$ch = curl_init($api_url);

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Token token=\"{$api_key}\""));

$json_data = curl_exec($ch);

return dd($json_data);

输出结果符合预期。

{"page":1,"per_page":100,"total_pages":1,"total_records":11,
....
....

我在使用 Guzzle 时出了问题,不知道哪里做错了?
1个回答

8
您已经正确地设置了Guzzle请求,您只需要在检索到$request后对其进行更多操作。

在请求后添加以下行:

$result = json_decode($request->getBody());

将其添加到您的代码中,它应该是这样的:

$client = new Client;
$request = $client->request('GET', 'https://api.callrail.com/v1/companies.json', [
    'headers' => [
        'Authorization' => 'Token token="my_api_string"'
    ]
]);

$result = json_decode($request->getBody());

return dd($result);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接