curl_errno错误码说明

本文深入解析了CURL常见的错误代码,包括CURLE_UNSUPPORTED_PROTOCOL、CURLE_FAILED_INIT、CURLE_URL_MALFORMAT等,帮助开发者理解并解决CURL API在使用过程中遇到的问题。
错误代码列表
CURLE_UNSUPPORTED_PROTOCOL (1) – 您传送给 libcurl 的网址使用了此 libcurl 不支持的协议。 可能是您没有使用的编译时选项造成了这种情况(可能是协议字符串拼写有误,或没有指定协议 libcurl 代码)。
CURLE_FAILED_INIT (2) – 非常早期的初始化代码失败。 可能是内部错误或问题。
CURLE_URL_MALFORMAT (3) – 网址格式不正确。
CURLE_COULDNT_RESOLVE_PROXY (5) – 无法解析代理服务器。 指定的代理服务器主机无法解析。
CURLE_COULDNT_RESOLVE_HOST (6) – 无法解析主机。 指定的远程主机无法解析。
CURLE_COULDNT_CONNECT (7) – 无法通过 connect() 连接至主机或代理服务器。
CURLE_FTP_WEIRD_SERVER_REPLY (8) – 在连接到 FTP 服务器后,libcurl 需要收到特定的回复。 此错误代码表示收到了不正常或不正确的回复。 指定的远程服务器可能不是正确的 FTP 服务器。
CURLE_REMOTE_ACCESS_DENIED (9) – 我们无法访问网址中指定的资源。 对于 FTP,如果尝试更改为远程目录,就会发生这种情况。
CURLE_FTP_WEIRD_PASS_REPLY (11) – 在将 FTP 密码发送到服务器后,libcurl 需要收到正确的回复。 此错误代码表示返回的是意外的代码。
CURLE_FTP_WEIRD_PASV_REPLY (13) – libcurl 无法从服务器端收到有用的结果,作为对 PASV 或 EPSV 命令的响应。 服务器有问题。
CURLE_FTP_WEIRD_227_FORMAT (14) – FTP 服务器返回 227 行作为对 PASV 命令的响应。 如果 libcurl 无法解析此行,就会返回此代码。
CURLE_FTP_CANT_GET_HOST (15) – 在查找用于新连接的主机时出现内部错误。
CURLE_FTP_COULDNT_SET_TYPE (17) – 在尝试将传输模式设置为二进制或 ascii 时发生错误。
CURLE_PARTIAL_FILE (18) – 文件传输尺寸小于或大于预期。 当服务器先报告了一个预期的传输尺寸,然后所传送的数据与先前指定尺寸不相符时,就会发生此错误。
CURLE_FTP_COULDNT_RETR_FILE (19) – ‘RETR’ 命令收到了不正常的回复,或完成的传输尺寸为零字节。
CURLE_QUOTE_ERROR (21) – 在向远程服务器发送自定义 “QUOTE” 命令时,其中一个命令返回的错误代码为 400 或更大的数字(对于 FTP),或以其他方式表明命令无法成功完成。
CURLE_HTTP_RETURNED_ERROR (22) – 如果 CURLOPT_FAILONERROR 设置为 TRUE,且 HTTP 服务器返回 >= 400 的错误代码,就会返回此代码。 (此错误代码以前又称为 CURLE_HTTP_NOT_FOUND。)
CURLE_WRITE_ERROR (23) – 在向本地文件写入所收到的数据时发生错误,或由写入回调 (write callback) 向 libcurl 返回了一个错误。
CURLE_UPLOAD_FAILED (25) – 无法开始上传。 对于 FTP,服务器通常会拒绝执行 STOR 命令。 错误缓冲区通常会提供服务器对此问题的说明。 (此错误代码以前又称为 CURLE_FTP_COULDNT_STOR_FILE。)
CURLE_READ_ERROR (26) – 读取本地文件时遇到问题,或由读取回调 (read callback) 返回了一个错误。
CURLE_OUT_OF_MEMORY (27) – 内存分配请求失败。 此错误比较严重,若发生此错误,则表明出现了非常严重的问题。
CURLE_OPERATION_TIMEDOUT (28) – 操作超时。 已达到根据相应情况指定的超时时间。 请注意: 自 Urchin 6.6.0.2 开始,超时时间可以自行更改。 要指定远程日志下载超时,请打开 urchin.conf 文件,取消以下行的注释标记:
#DownloadTimeout: 30
CURLE_FTP_PORT_FAILED (30) – FTP PORT 命令返回错误。 在没有为 libcurl 指定适当的地址使用时,最有可能发生此问题。 请参阅 CURLOPT_FTPPORT。
CURLE_FTP_COULDNT_USE_REST (31) – FTP REST 命令返回错误。 如果服务器正常,则应当不会发生这种情况。
CURLE_RANGE_ERROR (33) – 服务器不支持或不接受范围请求。
CURLE_HTTP_POST_ERROR (34) – 此问题比较少见,主要由内部混乱引发。
CURLE_SSL_CONNECT_ERROR (35) – 同时使用 SSL/TLS 时可能会发生此错误。 您可以访问错误缓冲区查看相应信息,其中会对此问题进行更详细的介绍。 可能是证书(文件格式、路径、许可)、密码及其他因素导致了此问题。
CURLE_FTP_BAD_DOWNLOAD_RESUME (36) – 尝试恢复超过文件大小限制的 FTP 连接。
CURLE_FILE_COULDNT_READ_FILE (37) – 无法打开 FILE:// 路径下的文件。 原因很可能是文件路径无法识别现有文件。 建议您检查文件的访问权限。
CURLE_LDAP_CANNOT_BIND (38) – LDAP 无法绑定。LDAP 绑定操作失败。
CURLE_LDAP_SEARCH_FAILED (39) – LDAP 搜索无法进行。
CURLE_FUNCTION_NOT_FOUND (41) – 找不到函数。 找不到必要的 zlib 函数。
CURLE_ABORTED_BY_CALLBACK (42) – 由回调中止。 回调向 libcurl 返回了 “abort”。
CURLE_BAD_FUNCTION_ARGUMENT (43) – 内部错误。 使用了不正确的参数调用函数。
CURLE_INTERFACE_FAILED (45) – 界面错误。 指定的外部界面无法使用。 请通过 CURLOPT_INTERFACE 设置要使用哪个界面来处理外部连接的来源 IP 地址。 (此错误代码以前又称为 CURLE_HTTP_PORT_FAILED。)
CURLE_TOO_MANY_REDIRECTS (47) – 重定向过多。 进行重定向时,libcurl 达到了网页点击上限。 请使用 CURLOPT_MAXREDIRS 设置上限。
CURLE_UNKNOWN_TELNET_OPTION (48) – 无法识别以 CURLOPT_TELNETOPTIONS 设置的选项。 请参阅相关文档。
CURLE_TELNET_OPTION_SYNTAX (49) – telnet 选项字符串的格式不正确。
CURLE_PEER_FAILED_VERIFICATION (51) – 远程服务器的 SSL 证书或 SSH md5 指纹不正确。
CURLE_GOT_NOTHING (52) – 服务器未返回任何数据,在相应情况下,未返回任何数据就属于出现错误。
CURLE_SSL_ENGINE_NOTFOUND (53) – 找不到指定的加密引擎。
CURLE_SSL_ENGINE_SETFAILED (54) – 无法将选定的 SSL 加密引擎设为默认选项。
CURLE_SEND_ERROR (55) – 无法发送网络数据。
CURLE_RECV_ERROR (56) – 接收网络数据失败。
CURLE_SSL_CERTPROBLEM (58) – 本地客户端证书有问题
CURLE_SSL_CIPHER (59) – 无法使用指定的密钥
CURLE_SSL_CACERT (60) – 无法使用已知的 CA 证书验证对等证书
CURLE_BAD_CONTENT_ENCODING (61) – 无法识别传输编码
CURLE_LDAP_INVALID_URL (62) – LDAP 网址无效
CURLE_FILESIZE_EXCEEDED (63) – 超过了文件大小上限
CURLE_USE_SSL_FAILED (64) – 请求的 FTP SSL 级别失败
CURLE_SEND_FAIL_REWIND (65) – 进行发送操作时,curl 必须回转数据以便重新传输,但回转操作未能成功
CURLE_SSL_ENGINE_INITFAILED (66) – SSL 引擎初始化失败
CURLE_LOGIN_DENIED (67) – 远程服务器拒绝 curl 登录(7.13.1 新增功能)
CURLE_TFTP_NOTFOUND (68) – 在 TFTP 服务器上找不到文件
CURLE_TFTP_PERM (69) – 在 TFTP 服务器上遇到权限问题
CURLE_REMOTE_DISK_FULL (70) – 服务器磁盘空间不足
CURLE_TFTP_ILLEGAL (71) – TFTP 操作非法
CURLE_TFTP_UNKNOWNID (72) – TFTP 传输 ID 未知
CURLE_REMOTE_FILE_EXISTS (73) – 文件已存在,无法覆盖
CURLE_TFTP_NOSUCHUSER (74) – 运行正常的 TFTP 服务器不会返回此错误
CURLE_CONV_FAILED (75) – 字符转换失败
CURLE_CONV_REQD (76) – 调用方必须注册转换回调
CURLE_SSL_CACERT_BADFILE (77) – 读取 SSL CA 证书时遇到问题(可能是路径错误或访问权限问题)
CURLE_REMOTE_FILE_NOT_FOUND (78) – 网址中引用的资源不存在
CURLE_SSH (79) – SSH 会话中发生无法识别的错误
CURLE_SSL_SHUTDOWN_FAILED (80) – 无法终止 SSL 连接
<?php // 启用所有错误报告,方便调试 ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // 接口 URL,from_id 可以根据需要修改 $url = "https://cloud.rongtonggold.com/api/future/goldlist?from_id="; // POST 数据 $postData = json_encode([ "page" => 1, "limit" => 6 ]); // 请求头(完整模拟小程序环境) $headers = [ "Accept-Language: zh-CN,zh;q=0.9", "Connection: keep-alive", "Content-Length: " . strlen($postData), "Content-Type: application/json", "Host: cloud.rongtonggold.com", "Referer: https://servicewechat.com/wxdaf66ea4f7982888/7/page-frame.html", "Sec-Fetch-Dest: empty", "Sec-Fetch-Mode: cors", "Sec-Fetch-Site: cross-site", "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c37)XWEB/14185", "xweb_xhr: 1" ]; $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应内容而不是直接输出 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // 连接超时 30 秒 curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 总执行超时 60 秒 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁用 SSL 验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 执行请求 $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 错误检查 if (curl_errno($ch)) { echo "cURL 错误: " . curl_error($ch) . "\n"; } else { echo "HTTP 状态码: " . $httpCode . "\n"; echo "响应内容:\n" . $response; } curl_close($ch);不能正常访问
最新发布
09-06
<?php //临时邮箱:https://mail.td/ function gettoken($email){ // 初始化 cURL $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, "https://mail.td/zh/mail/".$email); // 设置请求的 URL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应保存到变量而不是输出 curl_setopt($ch, CURLOPT_HEADER, true); // 包含头部信息 // 执行 cURL 请求 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); } // 获取响应头部信息的长度 $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); // 分离头部信息和响应体 $header = substr($response, 0, $header_size); // 将头部信息转换为关联数组 $headerArray = []; // 解析头部信息为数组 $headers = explode("\r\n", $header); foreach ($headers as $headerLine) { $pos = strpos($headerLine, ':'); if ($pos !== false) { $key = substr($headerLine, 0, $pos); $value = trim(substr($headerLine, $pos + 1)); $headerArray[$key] = $value; } } $string = $headerArray['set-cookie']; // 使用正则表达式匹配目标字符串 $pattern = '/auth_token=([^;]+)/'; if (preg_match($pattern, $string, $matches)) { $extractedString = $matches[1]; return $extractedString; } // 关闭 cURL 资源 curl_close($ch); } // 第一个方法:获取随机邮箱并发送请求 function getRandomEmail() { // 生成随机的邮箱地址,这里使用一个简单的示例 $randomEmail = uniqid() . '@nqmo.com'; // 这里可以改为生成真实的随机邮箱 // 构建请求的 URL $url = 'https://mail.td/_next/data/Vo6ilNCStMVNBJtfMWiXR/zh/mail/' . urlencode($randomEmail) . '.json?name=' . urlencode($randomEmail); // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $res = json_decode($response); if(isset($res->__N_SSP)){ $arr = array( "code"=>0, "msg"=>"随机邮箱获取成功", "email"=>$randomEmail, ); return $arr; }else{ $arr = array( "code"=>1, "msg"=>"随机邮箱获取失败", "email"=>$res->__N_SSP, ); return $arr; } } // 第二个方法:接收邮箱参数并发送请求 function sendGetRequest($email) { // 构建请求的 URL $url = 'https://mail.td/api/api/v1/mailbox/' . urlencode($email); // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: bearer '.gettoken($email) )); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $arr = array( "email"=>$email, "content"=>json_decode($response), ); return $arr; } //根据id获取邮箱内容 function getEmailContent($email,$id){ // 构建请求的 URL $url = 'https://mail.td/api/api/v1/mailbox/' . urlencode($email)."/".$id; // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: bearer '.gettoken($email) )); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $arr = array( "id"=>$id, "email"=>$email, "content"=>json_decode($response), ); return $arr; } //$res = gettoken(); // $res = getEmailContent("liuqing@nqmo.com","20240712T051842-6261"); // echo json_encode($res); if(isset($_GET["act"])){ $act = $_GET["act"]; if($act=='getRandomEmail'){ $res = getRandomEmail(); }else if($act=='getEmailMsg'&&isset($_GET["email"])){ $res = sendGetRequest($_GET["email"]); }else if($act=='getEmailContent'&&isset($_GET["email"])&&isset($_GET["id"])){ $res = getEmailContent($_GET["email"],$_GET["id"]); }else{ $res = array( "code"=>1, "msg"=>"参数错误", ); } echo json_encode($res); }else{ $res = array( "code"=>1, "msg"=>"参数错误", ); echo json_encode($res); } ?> 以上代码转成delphi XE7 可以使用的版本,然后对应可用的 ssleay32.dll
05-15
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值