$req['msg'], 'header' => $req['header']] : ['header' => $req['header']]) : ($req['ret'] ? $req['msg'] : ''); } /** * 发送一个GET请求 * @param string $url * @param array $params * @param bool $agent * @param array $options * @param array $header * @param bool $headerOnly * @return mixed|string */ public static function get(string $url, array $params = [], bool $agent = true, array $options = [], array $header = [], bool $headerOnly = false) { $req = self::request($url, $params, $agent, 'GET', $options, $header); return $headerOnly ? ($req['ret'] ? ['data' => $req['msg'], 'header' => $req['header']] : ['header' => $req['header']]) : ($req['ret'] ? $req['msg'] : ''); } /** * @param string $url * @param array $params * @param bool $agent * @param string $method * @param array $options * @param array $header * @return array */ public static function request(string $url, array $params, bool $agent, string $method = 'GET', array $options = [], array $header = []): array { try { $client = self::getClient($agent, $options, $header); $query = $method == 'GET' ? ['query' => $params] : ['form_params' => $params]; $response = $client->request($method, $url, $query); $content = $response->getBody()->getContents(); $header = $response->getHeaders(); if (!empty($content)) { return ['ret' => true, 'msg' => $content, 'header' => $header]; } } catch (\Throwable $e) { return ['ret' => false, 'msg' => $e->getMessage(), 'header' => $header]; } return ['ret' => false, 'msg' => $content, 'header' => $header]; } /** * 获取访问客户端 * @param bool $agent * @param array $options * @param array $header * @return Client */ private static function getClient(bool $agent, array $options = [], array $header = []): Client { if (empty($options)) { $options = [ 'timeout' => 60, 'connect_timeout' => 60, 'verify' => false, 'http_errors' => false, 'headers' => [ 'X-REQUESTED-WITH' => 'XMLHttpRequest', 'Referer' => dirname(request()->url()), 'User-Agent' => self::$agent[$agent] ] ]; } if (!empty($header)) { $options['headers'] = array_merge($options['headers'], $header); } return new Client($options); } }