首页 > 解决方案 > Laravel Guzzle Basic Auth 成功返回空

问题描述

下面是我的代码。当我成功授权时, $this->token 得到空值。当我用 PHP Curl 尝试这个函数时,它运行良好,没有问题。

可能是什么问题呢?

顺便说一句,如果我尝试错误的密码或用户名,它会出错。

  $client = new \GuzzleHttp\Client();
  $response = $client->get($this->url . "/auth/getToken", [
      'auth' => [
        'myuser',
        'mypassword'
      ]
  ]); 
$this->token = $response;

标签: laravelguzzle

解决方案


基于此代码示例,$this->token将是一个实例,Psr\Http\Message\ResponseInterface其实现将包含数组、整数和流资源。根据它在后续代码中的使用方式,它可能看起来是一个“空值”,基于 PHP 本身如何尝试转换它。

如果我们假设响应正文的全部内容,是所需的身份验证代码(不是格式良好的 json),我们可以将示例修改为:

$client = new \GuzzleHttp\Client();
$response = $client->get($this->url . "/auth/getToken", [
    'auth' => [
    'myuser',
    'mypassword'
  ]
]); 
$this->token = $response->getBody()->__toString();
// the __toString() is written to make PHP's casting explicit

或者:

$client = new \GuzzleHttp\Client();
$this->token = $client->get($this->url . "/auth/getToken", [
    'auth' => [
    'myuser',
    'mypassword'
  ]
])
    ->getBody()
    ->__toString();
// the __toString() is written to make PHP's casting explicit

推荐阅读