当 curl 和 Postman 完全正常时出现 Guzzle 错误 "Call to a member function getStatusCode() on null"

Guzzle error "Call to a member function getStatusCode() on null" when curl and Postman are perfectly fine

我在项目中将 Guzzle 设置为 Laravel 6 的 HTTP 客户端。它运行良好,并在每次 API 命中时给出响应。但突然 return 出现“在 null 时调用成员函数 getStatusCode()”错误。

我试过使用 Postman 和 curl 来点击 API,当 Guzzle 没有时,他们 return 做出了正确的响应。

RequestException 响应的 return 为 null,而不是 returning 响应,print_r。

我已经尝试调试 REST API 以测试使用 Guzzle 时请求的去向,但 请求没有'甚至没有到达目标函数.

这是我的 Guzzle 代码:

class ApiCallback
{
    public static function request($method, $uri, $params = [], $useAccessToken = true){
        $client = new \GuzzleHttp\Client();
        $response = null;

        $jsonObj = null;
        try{
            if($useAccessToken){
                $response = $client->request(
                    strtoupper($method),
                    $uri,
                    [
                        "headers" =>[
                            'Accept' => '*/*',
                            "Authorization" => "Bearer ".Session::get('access_token'),
                            'Content-Type' => 'application/json',
                            'User-Agent' => 'saranaku-'.Session::get('id'),
                            'Content-Length' => '0',
                            'Accept-Encoding' => 'gzip, deflate, br',
                            'Connection' => 'keep-alive'
                        ]
                        ,
                        "body" => \json_encode(
                            $params
                        )
                    ]
                );
            }else{
                $response = $client->request(
                    strtoupper($method),
                    $uri,
                    [
                        "headers" =>[
                            'Accept' => '*/*',
                            'Content-Type' => 'application/json',
                            'User-Agent' => "saranaku-guest",
                            'Content-Length' => '0',
                            'Accept-Encoding' => 'gzip, deflate, br',
                            'Connection' => 'keep-alive'
                        ]
                        ,
                        "body" => \json_encode(
                            $params
                        )
                    ]
                );
            }
            $jsonObj = json_decode((string) $response->getBody());
            return new BaseResponse(
                $jsonObj->status ?? false,
                $jsonObj->code ?? null,
                $jsonObj->message ?? null ,
                $jsonObj->data ?? null
            );
        }catch(RequestException $e){
//            echo Psr7\str($e->getRequest());
//            echo Psr7\str($e->getResponse());
            $jsonObj = $e->getResponse();
            print_r($e->getResponse());
        }
        return new BaseResponse(
            $jsonObj->status ?? false,
            $jsonObj->getStatusCode() ?? null,
            $jsonObj->getReasonPhrase() ?? null ,
            $jsonObj->data ?? null
        );
    }

    public static function requestWithoutAccessToken($method, $url, $params = []){
        return ApiCallback::request($method, $url, $params, false);
    }
}

final class BaseResponse
{
    public $status;
    public $code;
    public $message;
    public $data;

    public function __construct($status,$code,$message = "",$data = [])
    {
        $this->status = $status;
        $this->code = $code;
        $this->message = $message;
        $this->data = $data;
    }
}

附加信息:

  1. REST API 在本地主机中 运行,端点为:/v1/login
  2. HTTP 方法是 POST
  3. REST API 正在使用 Java Spring Boot v1.5.6
  4. 请求正文是
{
     "data":{
          "username": "username_string",
          "password": "password_string"
     }
}
  1. 我已经尝试过这些清除缓存并执行 composer dump-autoload 但问题仍然存在

我找到了问题和解决方案。

所以我正在使用 Log 记录异常,发现我的 $uri 无效,因为我的 API BASE URL 未找到在 .env 文件上。所以解决方案是做 php artisan cache:clear 并且大口工作。

对于阅读此问题的任何人,如果堆栈跟踪没有帮助您,请记得尝试 Log