Php Laravel-Guzzle请求/卷曲错误6:无法解析主机
我尝试向Github API发出API请求,只是为了测试。我在我的Laravel 5.1应用程序上安装了最新的Guzzle版本(“Guzzle/Guzzle”:“^3.9”)。 在我的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/',
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容器,它工作得很好。谢谢你的回复。是的,但这不起作用,还是同样的错误。