php - GuzzleHttp\Client 不返回任何响应
问题描述
我正在使用官方文档中的护照创建身份验证 api,但我一直坚持发送 GuzzelHttp 请求
我做的和文档完全一样,但是当我想用邮递员测试时没有返回结果,它只是不停地加载
这是我的代码我的控制器
$user = new User();
$user->email = $request->email;
$user->name = $request->name;
$user->password = bcrypt($request->password);
$user->save();
$http = new Client;
$response = $http->post('http://localhost:8000/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 2,
'client_secret' => 'x2ESrkADoQEaQ91iMW9kKiIvjKo0LL4RxlUtqtmy',
'password' => $request->password
],
]);
dd($response);
return response([
'success'=> true,
'successMessageKey' => 'userCreatedSuccessfully' ,
'data'=>json_decode((string) $response->getBody(), true)
]);
和我的路线
Route::post('users/register',[
'uses' => 'Api\AuthController@register'
]);
当我运行我的路线时,我没有得到这样的结果并卡在加载中
解决方案
问题是在使用时php artisan serve
,它使用的是单线程的 PHP 服务器。
Web 服务器只运行一个单线程进程,因此如果请求被阻塞,PHP 应用程序将停止。
您可以执行此解决方案:
当调用自身时,线程阻塞等待自己的回复。解决方案是将提供应用程序和消费应用程序分离到它们自己的实例中,或者在多线程网络服务器(例如 Apache 或 Nginx)上运行它。
或者,如果您正在寻找快速修复来测试您的更新 - 您可以通过打开两个命令提示符来完成此操作。第一个将运行php artisan serve
(本地我的默认端口是 8000,您将在 上运行您的站点http://localhost:8000
)。第二个会运行php artisan serve --port 8001
。
然后,您将发布请求更新为:
$response = $http->post('http://localhost:8001/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 2,
'client_secret' => 'x2ESrkADoQEaQ91iMW9kKiIvjKo0LL4RxlUtqtmy',
'password' => $request->password
],
]);
这应该在您的测试期间有所帮助,直到您能够在服务器或本地虚拟主机上进行所有操作。
推荐阅读
- deep-learning - 如何下载拥抱脸情绪分析管道以离线使用?
- python - 使用 for 循环和预定义的第一个元素创建一个 python 列表
- spring - Spring SFTP Outbound Adapter - 确定文件何时发送
- java - webflux 中的异步请求不是异步的
- java - Qt 5.14.2 在 Android 上共享文件
- python-3.x - 如何从单引号转换带有双引号的python字典
- c# - 如何返回与登录系统的用户具有相同城市代码的用户列表?
- java - 如何在 logback.groovy 中为日志启用 traceId 以跟踪请求。应用光学
- sql - 将单个表中的行与不需要的结果连接起来
- javascript - 在Javascript中以非可变方式将字符串附加到数组