首页 > 解决方案 > 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'
]);

当我运行我的路线时,我没有得到这样的结果并卡在加载中

错误

标签: phplaravelguzzle

解决方案


问题是在使用时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
        ],
    ]);

这应该在您的测试期间有所帮助,直到您能够在服务器或本地虚拟主机上进行所有操作。


推荐阅读