baseUrl)) { $this->utils->errorThrow('请设置baseUrl'); } $this->client = new Client([ 'timeout' => 60.0, 'connect_timeout' => 10.0, 'base_uri' => $this->baseUrl, 'verify' => false, // 禁用SSL证书验证(不推荐用于生产环境) ]); return $this; } /** * GET 请求 * @param $uri * @param array $options * @return array * @throws Exception */ public function get($uri, array $options = []): array { return $this->init()->request('GET', $uri, [ 'query' => $options, 'headers' => $this->headers ]); } /** * POST 请求 * @param $uri * @param array $options * @return array * @throws Exception */ public function post($uri, array $options = []): array { return $this->init()->request('POST', $uri, [ 'form_params' => $options, 'headers' => $this->headers ]); } /** * POST 请求 * @param $uri * @param array $options * @return array * @throws Exception */ public function postJson($uri, array $options = []): array { // ds([ 'json' => $options, 'headers' => $this->headers, 'url' => $this->baseUrl. $uri ]); return $this->init()->request('POST', $uri, [ 'json' => $options, 'headers' => $this->headers ]); } /** * 请求 * @param $method * @param $uri * @param array $options * @return array */ private function request($method, $uri, array $options): array { try { $response = $this->client->request($method, $uri, $options); return [ 'status_code' => $response->getStatusCode(), 'body' => json_decode((string)$response->getBody(), true), ]; } catch (RequestException $e) { return [ 'status_code' => $e->getCode(), 'error_message' => $e->getMessage(), 'type' => 'RequestException', 'body' => [] ]; } catch (GuzzleException $e) { return [ 'status_code' => $e->getCode(), 'error_message' => $e->getMessage(), 'type' => 'GuzzleException', 'body' => [] ]; } } }