我正在尝试使用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);
}
答案 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()
应该包含响应内容。