Laravel Guzzle GET请求

10
    $client = new Client(['base_uri' => 'http://api.tvmaze.com/']);

    $res = $client->request('GET', '/schedule?country=US&date=2014-12-01');

    return $res;

返回此错误:

"Class 'Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory' not found"

我已尝试在我的composer.json文件中包含“symfony/psr-http-message-bridge”:“0.2”

5个回答

11
你需要获取答案的主体内容:
$client = new \GuzzleHttp\Client(['base_uri' => 'http://api.tvmaze.com/']);

$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');

return $res->getBody();

1
就这么简单。谢谢。 - Charles

8

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

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

PSR-7 标准规定了 HTTP 消息的接口,包括请求和响应。如果你想要获取 PSR-7 请求实例而不是 Laravel 请求,你需要先安装一些库。Laravel 使用 Symfony HTTP Message Bridge 组件将典型的 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

4
对于那些使用 "guzzlehttp/guzzle": "^6.5" 的人来说,似乎 zendframework/zend-diactoros 包已经被放弃维护,你应该避免使用它。可以使用 laminas/laminas-diactoros 代替。 - steven7mwesigwa
你也可以使用 composer require nyholm/psr7 替代 Symfony 建议的 zendframework/zend-diactoros。这对我很有效! - Ishaan
安装了 Laravel 8,但问题仍然存在。已经安装了 "psr-http-message-bridge" 和 "nyholm/psr7",并调用了 composer dumpautoload。但是仍然出现错误提示 "Class "Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory" not found"。 - Amid

5

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

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

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


2

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

然后执行以下操作:

composer dump-autoload

最后重新安装它:

composer require guzzlehttp/guzzle

同时确保您正在使用guzzle命名空间:

use GuzzleHttp\Client;

1

您正在实例化一个Client,但似乎没有明确要实例化的类。请尝试以下操作:

$client = new \GuzzleHttp\Client(['base_uri' => 'http://api.tvmaze.com/']);

$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');

return $res;

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