Laravel Guzzle GET 请求

joh*_*s12 9 php laravel guzzle

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

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

    return $res;
Run Code Online (Sandbox Code Playgroud)

返回此错误:

"Class 'Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory' not found"
Run Code Online (Sandbox Code Playgroud)

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

小智 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();
Run Code Online (Sandbox Code Playgroud)


Kei*_*DOG 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
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题。

编辑 - - - -

正如评论中所建议的,该软件包zendframework/zend-diactoros已被放弃。那么最好使用替代品。

Symfony PSR7 Bridge建议:

composer require nyholm/psr7
Run Code Online (Sandbox Code Playgroud)

Laminas Diactoros Github 包

composer require laminas/laminas-diactoros
Run Code Online (Sandbox Code Playgroud)

  • 对于那些使用 `"guzzlehttp/guzzle": "^6.5"` 的人来说,似乎:包 `zendframework/zend-diactoros` 已被放弃,您应该避免使用它。请改用“laminas/laminas-diactoros”。 (4认同)

RJH*_*RJH 5

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

composer require symfony/psr-http-message-bridge
composer require nyholm/psr7
Run Code Online (Sandbox Code Playgroud)

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


Leo*_*ent 2

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

然后做:

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

最后重新安装它:

composer require guzzlehttp/guzzle

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

use GuzzleHttp\Client;
Run Code Online (Sandbox Code Playgroud)