使用Guzzle 6读取流

时间:2018-09-25 21:00:54

标签: guzzle6

我正在尝试使用Guzzle 6从api读取数据,但无法找到任何相关示例。 api返回的每一行都是一个json对象-目的是在收到每一行时对其进行处理。

我到目前为止的代码在下面,有人可以建议我感到困惑的地方吗?

谢谢

    ini_set('display_errors', true);

require('vendor/autoload.php');

use GuzzleHttp\Client;
use GuzzleHttp\Stream\Stream;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Psr7\Request;

$token = "1234";

$client = new Client(['base_uri' => 'https://apiurl.com'], ['stream' => true, 'debug'=>true]);


$headers = [
    'Authorization' => 'Bearer ' . $token,        
    'Accept'        => 'application/json',
];


$response = $client->request('GET', '?foo=bar', ['headers' => $headers ]);


$body = $response->getBody();
while (!$body->eof()) {
    echo $body->read(1024);
}

2 个答案:

答案 0 :(得分:1)

经过数小时的测试,结果证明创建客户端是一个简单的错误-正确的设置如下:

$client = new Client(['base_uri' => 'https://apiurl.com', 'stream' => true, 'debug'=>true]);

答案 1 :(得分:0)

应该使用以下内容访问内容:

$client = new Client([...]);
$request = $client->get($url, ['headers' => $headers ]);
$body = $response->getBody()->getContents();

您可以使用以下命令测试请求成功检查HTTP代码:

$code = $response->getStatusCode();

在您的代码中,如果您的$response变量正确(正确完成了请求),则$body->getContents()应该包含响应内容。