GuzzleHttp \ Client不返回任何响应

时间:2019-03-23 11:48:05

标签: php laravel guzzlehttp

我正在使用official docs中的护照创建身份验证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'
]);

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

error

4 个答案:

答案 0 :(得分:0)

我在您的代码中发现了问题

请检查您发送给auth / token的参数。您的请求中缺少用户名

答案 1 :(得分:0)

您需要将form_params的传递数组作为json

例如

$response = $http->post('http://localhost:8000/oauth/token', [
            'form_params' => json_encode([
                'grant_type' => 'password',
                'client_id' => 2,
                'client_secret' => 'x2ESrkADoQEaQ91iMW9kKiIvjKo0LL4RxlUtqtmy',
                'password' => $request->password
            ]),
 ]);

答案 2 :(得分:0)

尝试在邮递员的参数中包含 password_confirmation 。那就是我在laravel护照项目中所做的

答案 3 :(得分:0)

问题是使用php artisan serve时,它使用的是single-threaded的PHP服务器。

  

Web服务器仅运行一个单线程进程,因此如果请求被阻止,PHP应用程序将停止运行。

您可以这样做solution

  

在对其自身进行调用时,线程将阻塞以等待其自己的回复。解决方案是将提供的应用程序和使用的应用程序分离到各自的实例中,或者在诸如Apache或nginx的多线程Web服务器上运行它。

或者,如果您正在寻找快速修复程序来测试您的更新-您可以通过打开两个命令提示符来完成此操作。第一个将运行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
        ],
    ]);

这应该在测试期间有所帮助,直到您能够访问服务器或本地虚拟主机上的所有内容为止。