【PHP】Guzzle 请求方法类封装

 这段 PHP 代码定义了一个名为 GuzzleClient 的类,用于发送 HTTP 请求。它使用了 Guzzle HTTP 客户端库,这是一个非常流行的 PHP HTTP 客户端库,可以简化发送 HTTP 请求的过程。

client = new Client();
    }

    // 获取类的唯一实例
    public static function getInstance()
    {
        // 如果实例不存在,创建一个新实例
        if (!self::$instance) {
            self::$instance = new self();
        }

        // 返回实例
        return self::$instance;
    }

    // 发送 HTTP 请求的方法
    public function send(string $url, string $type = self::METHOD_POST, ?array $data = null)
    {
        try {
            // 设置默认请求选项
            $options = [
                'headers' => [
                    'Content-Type' => 'application/json',
                ],
            ];

            // 如果有请求数据,将其添加到选项中
            if ($data !== null) {
                $options['json'] = $data;
            }

            // 使用 Guzzle 客户端发送请求
            $response = $this->client->request($type, $url, $options);
            
            // 返回响应的内容
            // var_dump($response->getStatusCode());
            // var_dump($response->getHeaders());
            // var_dump($response->getBody()->getContents());
            return $response->getBody()->getContents();
        } catch (GuzzleException $e) {
            // 发生异常时,记录详细的错误信息
            error_log($e->getMessage() . ' URL: ' . $url . ' Data: ' . json_encode($data));
            
            // 抛出异常给上层调用者处理
            throw $e;
        }
    }
}

// 示例用法
try {
    // 获取 GuzzleClient 的实例
    $client = GuzzleClient::getInstance();

    // 使用实例发送请求
    $response = $client->send('https://jsonplaceholder.typicode.com/posts/1', 'GET');

    // 输出响应内容
    echo $response;
} catch (GuzzleException $e) {
    // 处理异常
    echo 'Error: ' . $e->getMessage();
}

GuzzleClient 类包含以下属性和方法:

  • METHOD_POST:一个常量,表示 HTTP POST 请求方法。
  • instance:一个静态属性,用于保存类的唯一实例。
  • client:一个属性,用于保存 Guzzle 客户端对象。
  • __construct():一个私有构造函数,确保只能在类内部实例化。
  • getInstance():一个静态方法,用于获取类的唯一实例。
  • send():一个方法,用于发送 HTTP 请求。它接受 URL、请求方法(默认为 POST)和请求数据(默认为 null)作为参数。

send() 方法中,首先设置默认请求选项,包括请求头中的 Content-Typeapplication/json。然后,如果有请求数据,将其添加到选项中。接下来,使用 Guzzle 客户端发送请求,并捕获任何可能的异常。如果发生异常,记录详细的错误信息,并抛出异常给上层调用者处理。

在示例用法中,首先获取 GuzzleClient 的实例,然后使用实例发送 GET 请求。最后,输出响应内容。如果发生异常,输出错误信息。

你可能感兴趣的:(php,guzzle,php,android,开发语言)