$code, 'message' => $message, 'data' => $data, ]; } //判断连接是否正确 public static function pageExists($url) { $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应作为字符串,而不是直接输出 curl_setopt($ch, CURLOPT_NOBODY, false); // 如果你想检查内容,设置为 false curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 允许重定向 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 100); // 设置连接超时时间 curl_setopt($ch, CURLOPT_TIMEOUT, 200); // 设置读取数据的超时时间 curl_setopt($ch, CURLOPT_FAILONERROR, true); // 在发生错误时返回 FALSE curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'); // 设置用户代理,模拟浏览器请求 // 执行 cURL 请求 $response = curl_exec($ch); // 检查是否有 cURL 错误发生 if (curl_errno($ch)) { curl_close($ch); return false; } // 获取 HTTP 状态码 $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 关闭 cURL curl_close($ch); // 判断 HTTP 状态码是否在 200-299 范围内(表示成功) // 或者你可以根据需要调整这个范围,比如包括 301, 302 重定向等 return $httpCode; } public static function http_get($url) { $oCurl = curl_init(); if (stripos($url, "https://") !== false) { curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 } curl_setopt($oCurl, CURLOPT_URL, $url); curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1); $sContent = curl_exec($oCurl); $aStatus = curl_getinfo($oCurl); curl_close($oCurl); if (intval($aStatus["http_code"]) == 200) { return $sContent; } else { return false; } } /** * POST 请求 * @param string $url * @param array $param * @param boolean $post_file 是否文件上传 * @return string content */ public static function http_post($url, $data, $options = []) { // 初始化CURL会话 $ch = curl_init($url); // 设置CURL选项 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($ch, CURLOPT_HEADER, false); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的POST请求。 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); // 要传递的POST数据,这里使用http_build_query将数组转换为URL编码的查询字符串。 // 如果有额外的CURL选项,则合并它们 if (!empty($options)) { curl_setopt_array($ch, $options); } // 执行CURL会话并获取响应 $response = curl_exec($ch); // 检查是否有CURL错误 if (curl_errno($ch)) { $error_msg = curl_error($ch); curl_close($ch); throw new Exception("CURL Error: $error_msg"); } // 获取HTTP状态码 $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 关闭CURL会话 curl_close($ch); // 返回一个包含响应和HTTP状态码的数组 $responseBody = $response; $headerEnd = strpos($response, "\r\n\r\n"); if ($headerEnd !== false) { // 去除响应头,只保留响应体 $responseBody = substr($response, $headerEnd + 4); // +4 是因为 "\r\n\r\n" 有4个字符 // echo $responseBody; // 输出:This is the response body. } else { // 如果没有找到空行,可能响应格式不正确或没有响应头 // echo "No headers found in response."; } return [ 'response' => $responseBody, 'http_code' => $http_code ]; } }