8.0, 'verify' => false, // 禁用 SSL 证书验证(测试环境可用) ]); $headers = array_merge([ 'Content-Type' => 'application/x-www-form-urlencoded;charset=utf-8', ], $headers); $body = http_build_query($data); for ($i = 0; $i <= $retry; $i++) { try { $response = $client->post($url, [ 'headers' => $headers, 'body' => $body, ]); $status = $response->getStatusCode(); $respBody = (string) $response->getBody(); Yii::info("[HttpClient] POST {$url} {$status} {$respBody}"); $json = json_decode($respBody, true); return $json ?: ['code' => $status, 'body' => $respBody]; } catch (RequestException $e) { $message = $e->getMessage(); Yii::error("[HttpClient] POST {$url} failed: {$message}"); if ($i < $retry) { sleep(1); // 重试间隔 continue; } return ['code' => 500, 'error' => $message]; } } } /** * 发送 GET 请求 */ public static function get(string $url, array $params = [], array $headers = [], int $retry = 1) { $client = new Client([ 'timeout' => 8.0, 'verify' => false, ]); $headers = array_merge([ 'Accept' => 'application/json', ], $headers); for ($i = 0; $i <= $retry; $i++) { try { $response = $client->get($url, [ 'headers' => $headers, 'query' => $params, ]); $status = $response->getStatusCode(); $respBody = (string) $response->getBody(); Yii::info("[HttpClient] GET {$url} {$status} {$respBody}"); $json = json_decode($respBody, true); return $json ?: ['code' => $status, 'body' => $respBody]; } catch (RequestException $e) { Yii::error("[HttpClient] GET {$url} failed: {$e->getMessage()}"); if ($i < $retry) { sleep(1); continue; } return ['code' => 500, 'error' => $e->getMessage()]; } } } }