Php Laravel-Guzzle请求/卷曲错误6:无法解析主机

Php Laravel-Guzzle请求/卷曲错误6:无法解析主机,php,laravel,curl,guzzle,Php,Laravel,Curl,Guzzle,我尝试向Github API发出API请求,只是为了测试。我在我的Laravel 5.1应用程序上安装了最新的Guzzle版本(“Guzzle/Guzzle”:“^3.9”)。 在我的routes.php中,我有以下代码: Route::get('guzzle/{username}', function($username) { $client = new Client([ 'base_uri' => 'https://api.github.com/users/',

我尝试向Github API发出API请求,只是为了测试。我在我的Laravel 5.1应用程序上安装了最新的Guzzle版本(“Guzzle/Guzzle”:“^3.9”)。 在我的
routes.php
中,我有以下代码:

Route::get('guzzle/{username}', function($username) {
    $client = new Client([
        'base_uri' => 'https://api.github.com/users/',
    ]);
    $response = $client->get("/users/$username");
    dd($response);
});
如果我现在访问URL domain.dev/github/kayyy,我会得到错误
cURL错误6:无法解析主机:用户

为什么我会犯这个错误

如果我访问,我可以看到
json
输出

我也在使用宅地/流浪者这可能是主人无法解决的问题吗?

编辑 如果我在没有基本uri的情况下尝试这个方法,它会起作用

Route::get('guzzle/{username}', function($username) {
   $client = new GuzzleHttp\Client();
    $response = $client->get("https://api.github.com/users/$username");
    dd($response);
});

实际上,单引号内不可能使用变量插值。这意味着您当前正在调用
users/$username
,并且
$username
变量不会被替换为其值

为了获得它,您应该通过以下方式之一使用它:

$response = $client->get("users/$username")->send();
$response = $client->get('users/' . $username)->send();

我个人更喜欢第二个,因为它被认为更快。

为什么要调用
$client->get->()->->send()
?特别是,为什么要在末尾链接send()方法?在演示看似相同的操作时,文档没有附加
send()
方法:

您还考虑了上述声明对上述引用手册页的影响吗?

当向客户机提供相对URI时,客户机将使用RFC 3986第2节中描述的规则将基本URI与相对URI组合


好吧,我解决了,我犯了个愚蠢的错误。 我使用了
新客户端

当然应该是
new-GuzzleHttp\Client

因为它只是为了在我的
routes.php中进行测试,所以我没有使用
名称空间

谢谢大家的帮助。

谢谢Paratron
在我的例子中,在CakePHP3.8和Docker19.03.5上,由于一些网络问题,我遇到了curl错误。我重新启动了我的蛋糕服务器docker容器,它工作得很好。

谢谢你的回复。是的,但这不起作用,还是同样的错误。