Laravel Guzzle GET request


$client = new Client(['base_uri' => 'http://api.tvmaze.com/']);
$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');
return $res;

返回此错误:

"Class 'SymfonyBridgePsrHttpMessageFactoryHttpFoundationFactory' not found"

我已经尝试在我的composer.json文件中包含"symfony/psrhttp消息桥":"0.2">

您需要得到答案的正文:

$client = new GuzzleHttpClient(['base_uri' => 'http://api.tvmaze.com/']);
$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');
return $res->getBody();

这是一个有点老的问题。然而,由于答案不能为我解决这个问题,所以在使用GuzzleHttp时,这里是最后一件要尝试的事情。

根据Laravel文件https://laravel.com/docs/5.3/requests#psr7-请求:

PSR-7标准为HTTP消息指定接口,包括请求和响应。如果您想获得PSR-7请求的实例而不是Laravel请求,则首先需要安装几个库。Laravel使用Symfony HTTP消息桥组件将典型的Laravel请求和响应转换为PSR-7兼容的实现:

composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros

这解决了我的问题。

编辑-------

正如意见中所建议的,放弃了zendframework/zend-diactoros包。那么最好使用备用。

Symfony PSR7 Bridge建议:

composer require nyholm/psr7

或Laminas Diactoros Github包:

composer require laminas/laminas-diactoros

您需要使用composer安装以下额外的symfony组件。

composer require symfony/psr-http-message-bridge
composer require nyholm/psr7

https://symfony.com/doc/..

首先删除guzzle包:composer remove guzzlehttp/guzzle

然后执行:

composer dump-autoload

最后重新安装:

composer require guzzlehttp/guzzle

还要确保您使用的是guzzle名称空间:

use GuzzleHttpClient;

您正在实例化一个客户端,但似乎没有显式地实例化该类。试试这个:

$client = new GuzzleHttpClient(['base_uri' => 'http://api.tvmaze.com/']);
$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');
return $res;

最新更新