libcurl 错误码全解析:CURLcode / CURLMcode / CURLSHcode / CURLUcode / CURLHcode 指南
libcurl 错误码全解析CURLcode / CURLMcode / CURLSHcode / CURLUcode / CURLHcode 指南【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl本指南以 docs/libcurl/libcurl-errors.md 为主体系统讲解 libcurlcurl 项目的传输库中五套错误码体系——easy 接口的CURLcode、multi 接口的CURLMcode、share 接口的CURLSHcode、URL 接口的CURLUcode与 header 接口的CURLHcode——涵盖每个错误码的数值、产生原因与排查思路。读完本文你将能够读懂 libcurl API 的返回值快速定位失败原因并借助CURLOPT_ERRORBUFFER、curl_easy_strerror()等配套手段高效处理错误。概览libcurl 有五套错误码libcurl 不是一个单一接口的库。它对外暴露了 easy、multi、share、URL 与 header 五套 API 体系每一套都有自己的错误码类型错误码类型所属接口典型返回函数数值范围CURLcodeeasy 接口curl_easy_perform()、curl_easy_setopt()0 ~ 101CURLMcodemulti 接口curl_multi_perform()、curl_multi_add_handle()-1 ~ 12CURLSHcodeshare 接口curl_share_setopt()、curl_share_cleanup()0 ~ 5CURLUcodeURL 接口curl_url_set()、curl_url_get()0 ~ 32CURLHcodeheader 接口curl_easy_header()0 ~ 7所有枚举定义集中维护在公开头文件 include/curl/curl.hCURLcode、CURLSHcode与 include/curl/multi.hCURLMcode中。头文件里有一条硬性约定值得注意Always add new return codes last. NeverEVERremove any. The return codes must remain the same!新错误码永远追加在末尾绝不删除任何已有码值这保证了 libcurl 的错误码在 ABI 层面保持稳定这也是为什么我们看到 20、24、29 等位置保留着CURLE_OBSOLETE*占位符——它们是历史遗留的已废弃编号被永久保留以维持二进制兼容。CURLcodeeasy 接口的核心错误码获取错误信息的两条途径几乎所有的 easy 接口函数都会返回CURLcode。文档明确指出无论什么情况设置 CURLOPT_ERRORBUFFER 都是个好主意——它会在运行时提供比错误码本身更详细的人类可读错误字符串例如 SSL 握手失败时具体是证书格式、路径还是权限问题。同时可以调用curl_easy_strerror()将数值错误码转换为固定描述字符串其声明如下const char *curl_easy_strerror(CURLcode errornum);典型用法示例出自 docs/libcurl/curl_easy_strerror.md#include curl/curl.h int main(void) { CURL *curl curl_easy_init(); if(curl) { CURLcode result; char errbuf[CURL_ERROR_SIZE]; /* CURL_ERROR_SIZE 定义于 curl.h */ /* 设置选项 ... */ curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); /* 执行完整传输 */ result curl_easy_perform(curl); /* 检查错误 */ if(result ! CURLE_OK) fprintf(stderr, curl_easy_perform() failed: %s\n, curl_easy_strerror(result)); } }curl_easy_strerror()的实现位于 lib/strerror.c它是一个针对CURLcode的switch语句把每个错误码映射为一句话描述如CURLE_COULDNT_CONNECT→Could not connect to server。注意库内编译选项CURLVERBOSE开启时才包含完整字符串表未开启时仅区分有错/无错因此生产环境中应优先依赖CURLOPT_ERRORBUFFER的运行时信息。CURLcode 完整清单0 ~ 101以下按数值顺序完整列出 easy 接口的全部错误码。标注已废弃的码值在现代版本中不再使用仅保留编号。网络与协议通用错误0 ~ 9码名称含义与排查方向0CURLE_OK一切正常照常继续。1CURLE_UNSUPPORTED_PROTOCOLURL 使用了当前 libcurl 不支持的协议。可能是编译期未启用该协议、协议字符串拼写错误或 libcurl 根本没有该协议的实现。2CURLE_FAILED_INIT早期初始化代码失败。多为内部错误、资源问题或初始化阶段无法完成的基础操作。3CURLE_URL_MALFORMATURL 格式不正确。4CURLE_NOT_BUILT_IN请求的特性、协议或选项在构建 libcurl 时未启用或被显式禁用需要重新构建 libcurl 才能使用。5CURLE_COULDNT_RESOLVE_PROXY无法解析代理给定的代理主机名解析失败。6CURLE_COULDNT_RESOLVE_HOST无法解析主机给定的远程主机未解析成功。7CURLE_COULDNT_CONNECT无法connect()到主机或代理。8CURLE_WEIRD_SERVER_REPLY服务器发送了 libcurl 无法解析的数据。此码在 7.51.0 之前名为CURLE_FTP_WEIRD_SERVER_REPLY。9CURLE_REMOTE_ACCESS_DENIED访问 URL 中资源的请求被拒绝。对 FTP 而言通常发生在试图切换远程目录时。FTP 相关错误10 ~ 19码名称含义与排查方向10CURLE_FTP_ACCEPT_FAILED主动activeFTP 会话中等待服务器回连时控制连接上传回了错误码或类似情况。11CURLE_FTP_WEIRD_PASS_REPLY发送 FTP 密码后服务器返回了非预期应答码。12CURLE_FTP_ACCEPT_TIMEOUT主动 FTP 会话中等待服务器连接时CURLOPT_ACCEPTTIMEOUT_MS或内部默认值超时。13CURLE_FTP_WEIRD_PASV_REPLYPASV 或 EPSV 命令未得到合理应答服务器实现有缺陷。14CURLE_FTP_WEIRD_227_FORMATFTP 服务器对 PASV 命令返回 227 行但 libcurl 解析该行失败。15CURLE_FTP_CANT_GET_HOST内部查找新连接所用主机失败。16CURLE_HTTP2HTTP/2 帧层检测到问题。此码较为笼统具体细节请看错误缓冲区。17CURLE_FTP_COULDNT_SET_TYPE尝试将传输模式设置为二进制或 ASCII 时收到错误。18CURLE_PARTIAL_FILE文件传输大小与预期不符。服务器先报告了预期大小随后交付的数据与之不一致。19CURLE_FTP_COULDNT_RETR_FILE对RETR命令收到怪异应答或零字节传输完成。HTTP / 传输回调错误20 ~ 28码名称含义与排查方向20已废弃现代版本不使用。21CURLE_QUOTE_ERROR向服务器发送自定义QUOTE命令时某条命令返回了 FTP 下 ≥400 的错误码或以其他方式表明命令未成功完成。22CURLE_HTTP_RETURNED_ERROR当 CURLOPT_FAILONERROR 设为 TRUE 且 HTTP 服务器返回 ≥400 的错误码时返回。23CURLE_WRITE_ERROR将接收数据写入本地文件时出错或写回调向 libcurl 返回了错误。24已废弃现代版本不使用。25CURLE_UPLOAD_FAILED启动上传失败。对 FTP服务器通常拒绝了STOR命令错误缓冲区通常包含服务器给出的解释。26CURLE_READ_ERROR读取本地文件出现问题或读回调返回了错误。27CURLE_OUT_OF_MEMORY内存分配请求失败。文档措辞强烈一旦出现说明情况非常严重。28CURLE_OPERATION_TIMEDOUT操作超时达到了指定/约定的时限。FTP / 范围请求错误29 ~ 36码名称含义与排查方向29已废弃现代版本不使用。30CURLE_FTP_PORT_FAILEDFTPPORT命令返回错误。通常是因为没有为 libcurl 指定足够好的地址参见 CURLOPT_FTPPORT。31CURLE_FTP_COULDNT_USE_RESTFTPREST命令返回错误。若服务器正常本不应发生。32已废弃现代版本不使用。33CURLE_RANGE_ERROR服务器不支持或不接受范围range请求。34已废弃自 7.56.0 起不再使用原名CURLE_HTTP_POST_ERROR。35CURLE_SSL_CONNECT_ERRORSSL/TLS 握手过程出现问题。强烈建议查看错误缓冲区中的具体消息它更能定位问题——可能是证书文件格式、路径、权限、密码等。36CURLE_BAD_DOWNLOAD_RESUME下载无法续传因为指定的偏移量超出了文件边界。文件 / LDAP 错误37 ~ 43码名称含义与排查方向37CURLE_FILE_COULDNT_READ_FILEfile://指定的文件无法打开多半是路径不对请检查文件权限。38CURLE_LDAP_CANNOT_BINDLDAP 无法 bindbind 操作失败。39CURLE_LDAP_SEARCH_FAILEDLDAP 搜索失败。40已废弃现代版本不使用。41已废弃自 7.53.0 起不再使用原名CURLE_FUNCTION_NOT_FOUND。42CURLE_ABORTED_BY_CALLBACK被回调中止。某个回调向 libcurl 返回了abort。43CURLE_BAD_FUNCTION_ARGUMENT函数被传入了错误参数。接口 / 重定向 / 选项错误44 ~ 52码名称含义与排查方向44已废弃现代版本不使用原名CURLE_BAD_CALLING_ORDER。45CURLE_INTERFACE_FAILED指定的出口接口无法使用。可通过 CURLOPT_INTERFACE 设置出口连接的源 IP 接口。46已废弃现代版本不使用原名CURLE_BAD_PASSWORD_ENTERED。47CURLE_TOO_MANY_REDIRECTS跟随重定向时达到最大次数可用 CURLOPT_MAXREDIRS 设置上限。48CURLE_UNKNOWN_OPTION传给 libcurl 的选项无法识别。多半是使用 libcurl 的程序自身的问题错误缓冲区可能指出具体是哪个选项。49CURLE_SETOPT_OPTION_SYNTAXsetopt 传入的选项格式错误详情见错误消息。50-51已废弃现代版本不使用。其中 51 号在 7.62.0 之后被CURLE_PEER_FAILED_VERIFICATION60统一接管。52CURLE_GOT_NOTHING服务器什么都没返回而在此情境下什么都没拿到被视为错误。SSL / 传输层错误53 ~ 67码名称含义与排查方向53CURLE_SSL_ENGINE_NOTFOUND指定的加密引擎未找到。54CURLE_SSL_ENGINE_SETFAILED将所选 SSL 加密引擎设为默认失败。55CURLE_SEND_ERROR发送网络数据失败。56CURLE_RECV_ERROR接收网络数据失败。57已废弃现代版本不使用原名CURLE_SHARE_IN_USE。58CURLE_SSL_CERTPROBLEM本地客户端证书有问题。59CURLE_SSL_CIPHER无法使用指定的加密套件。60CURLE_PEER_FAILED_VERIFICATION远程服务器的 SSL 证书或 SSH 指纹被判定为不可信。自 7.62.0 起与CURLE_SSL_CACERT统一其旧数值为 51。61CURLE_BAD_CONTENT_ENCODING无法识别的传输编码。62已废弃现代版本不使用原名CURLE_LDAP_INVALID_URL自 7.82.0 起停用。63CURLE_FILESIZE_EXCEEDED超过最大文件大小限制。64CURLE_USE_SSL_FAILED请求的 FTP SSL 级别失败。65CURLE_SEND_FAIL_REWIND发送操作需要回卷数据以便重传但回卷失败。66CURLE_SSL_ENGINE_INITFAILED初始化 SSL 引擎失败。67CURLE_LOGIN_DENIED远程服务器拒绝 curl 登录。TFTP 错误68 ~ 74码名称含义与排查方向68CURLE_TFTP_NOTFOUNDTFTP 服务器上找不到文件。69CURLE_TFTP_PERMTFTP 服务器上存在权限问题。70CURLE_REMOTE_DISK_FULL服务器磁盘空间不足。71CURLE_TFTP_ILLEGAL非法的 TFTP 操作。72CURLE_TFTP_UNKNOWNID未知的 TFTP 传输 ID。73CURLE_REMOTE_FILE_EXISTS文件已存在且未被覆盖。74CURLE_TFTP_NOSUCHUSER正常工作的 TFTP 服务器不应返回此错误。证书 / SSH 错误75 ~ 84码名称含义与排查方向75-76已废弃现代版本不使用原名CURLE_CONV_FAILED/CURLE_CONV_REQD自 7.82.0 起停用。77CURLE_SSL_CACERT_BADFILE读取 SSL CA 证书出问题路径访问权限。78CURLE_REMOTE_FILE_NOT_FOUNDURL 引用的资源不存在。79CURLE_SSHSSH 会话期间发生未指定的错误错误消息值得关注。80CURLE_SSL_SHUTDOWN_FAILED关闭 SSL 连接失败。81CURLE_AGAIN套接字尚未就绪无法 send/recv。等待就绪后重试。此码只会由curl_easy_recv()和curl_easy_send()返回。82CURLE_SSL_CRL_BADFILE加载 CRL证书吊销列表文件失败。83CURLE_SSL_ISSUER_ERROR签发者issuer检查失败。84CURLE_FTP_PRET_FAILEDFTP 服务器完全不理解 PRET 命令或不支持给定参数。使用 CURLOPT_CUSTOMREQUEST 时要小心自定义 LIST 命令也会在 PASV 前随 PRET 命令一起发送。RTSP / FTP 通配 / 分块错误85 ~ 89码名称含义与排查方向85CURLE_RTSP_CSEQ_ERRORRTSP CSeq 序号不匹配。86CURLE_RTSP_SESSION_ERRORRTSP 会话标识符不匹配。87CURLE_FTP_BAD_FILE_LIST无法解析 FTP 文件列表FTP 通配符下载期间。88CURLE_CHUNK_FAILED分块chunk回调报告了错误。89CURLE_NO_CONNECTION_AVAILABLE仅内部使用libcurl 永不返回无可用连接会话被排队。证书固定 / HTTP2 流 / 递归调用错误90 ~ 94码名称含义与排查方向90CURLE_SSL_PINNEDPUBKEYNOTMATCH与 CURLOPT_PINNEDPUBLICKEY 指定的固定公钥不匹配。91CURLE_SSL_INVALIDCERTSTATUS使用 CURLOPT_SSL_VERIFYSTATUS 询问证书状态时返回失败。92CURLE_HTTP2_STREAMHTTP/2 帧层发生流错误。93CURLE_RECURSIVE_API_CALL在回调内部调用了 API 函数不允许递归调用。94CURLE_AUTH_ERROR认证函数返回了错误。HTTP/3 与较新错误95 ~ 101码名称含义与排查方向95CURLE_HTTP3HTTP/3 层检测到问题。较为笼统具体细节请看错误缓冲区。96CURLE_QUIC_CONNECT_ERRORQUIC 连接错误可能由 SSL 库错误引起。QUIC 是 HTTP/3 传输所用的协议。97CURLE_PROXY代理握手错误。CURLINFO_PROXY_ERROR提供具体问题的额外细节该信息项定义于 include/curl/curl.h。98CURLE_SSL_CLIENTCERT需要 SSL 客户端证书。99CURLE_UNRECOVERABLE_POLL内部调用poll()或select()返回了不可恢复的错误。100CURLE_TOO_LARGE某个值或数据字段增长超过允许范围。101CURLE_ECH_REQUIRED尝试使用 ECHEncrypted Client Hello但失败。已废弃码的兼容性细节从源码注释include/curl/curl.h可以看到libcurl 为历史错误码保留了完整别名体系例如CURLE_SSL_CACERT宏指向CURLE_PEER_FAILED_VERIFICATION7.62.0 起CURLE_FTP_WEIRD_SERVER_REPLY指向CURLE_WEIRD_SERVER_REPLYCURLE_OPERATION_TIMEOUTED指向CURLE_OPERATION_TIMEDOUTCURLE_HTTP_NOT_FOUND指向CURLE_HTTP_RETURNED_ERROR如果你用CURL_NO_OLDIES编译宏构建应用可以确认自己的代码没有依赖任何旧名。CURLMcodemulti 接口错误码multi 接口函数curl_multi_perform()、curl_multi_add_handle()、curl_multi_setopt()等返回CURLMcode。同样可用curl_multi_strerror()获取描述字符串。完整的枚举定义在 include/curl/multi.h。码名称含义-1CURLM_CALL_MULTI_PERFORM严格说不是错误。它表示应当再次调用curl_multi_perform()中间不要做select()。7.20.02010 年 2 月 9 日发布之前curl_multi_perform()可能返回此码之后的版本不再返回。-1CURLM_CALL_MULTI_SOCKETCURLM_CALL_MULTI_PERFORM的别名现代 libcurl 永不返回。0CURLM_OK一切正常。1CURLM_BAD_HANDLE传入的句柄不是有效的CURLM句柄。2CURLM_BAD_EASY_HANDLEeasy 句柄无效——可能根本不是 easy 句柄或已被本/其他 multi 句柄占用。3CURLM_OUT_OF_MEMORY内存耗尽。4CURLM_INTERNAL_ERROR只有 libcurl 自身出 bug 才会返回请向 curl 项目报告。5CURLM_BAD_SOCKET传入的套接字不是 libcurl 已知的有效套接字。6CURLM_UNKNOWN_OPTIONcurl_multi_setopt()传入了不支持的选项。7CURLM_ADDED_ALREADY已加入某个 multi 句柄的 easy 句柄被再次添加。8CURLM_RECURSIVE_API_CALL在回调内部调用了 API 函数。9CURLM_WAKEUP_FAILUREwakeup 不可用或失败。10CURLM_BAD_FUNCTION_ARGUMENT函数被传入了错误参数。11CURLM_ABORTED_BY_CALLBACKmulti 句柄的回调返回了错误。12CURLM_UNRECOVERABLE_POLL内部调用poll()或select()返回了不可恢复的错误。CURLSHcodeshare 接口错误码share 接口用于在多个 easy 句柄之间共享 Cookie、DNS 缓存、SSL 会话等数据其函数curl_share_setopt()、curl_share_cleanup()返回CURLSHcode可用curl_share_strerror()解释。枚举定义在 include/curl/curl.h。码名称含义0CURLSHE_OK一切正常。1CURLSHE_BAD_OPTION传入了无效的 share 选项。2CURLSHE_IN_USEshare 对象当前正在使用中。3CURLSHE_INVALID传入了无效的 share 对象。4CURLSHE_NOMEM内存不足。5CURLSHE_NOT_BUILT_IN当前库未启用该共享特性构建期决定。CURLUcodeURL 接口错误码URL APIcurl_url()、curl_url_set()、curl_url_get()等返回CURLUcode可用curl_url_strerror()解释。这一套错误码几乎全部围绕 URL 各组成部分的解析与合法性校验展开。码名称含义0CURLUE_OK一切正常。1CURLUE_BAD_HANDLE传入了无效的 URL 句柄。2CURLUE_BAD_PARTPOINTER传入了无效的 part 参数。3CURLUE_MALFORMED_INPUT传给 URL API 函数的输入格式错误。4CURLUE_BAD_PORT_NUMBER端口号不是 0 ~ 65535 之间的十进制数。5CURLUE_UNSUPPORTED_SCHEME当前 libcurl 构建不支持给定的 URL scheme。6CURLUE_URLDECODEURL 解码错误多半是输入中含有垃圾字符。7CURLUE_OUT_OF_MEMORY内存函数失败。8CURLUE_USER_NOT_ALLOWED在禁止的情况下于 URL 中传入了凭据。9CURLUE_UNKNOWN_PART传入了未知的 part ID。10CURLUE_NO_SCHEMEURL 中没有 scheme 部分。11CURLUE_NO_USERURL 中没有 user 部分。12CURLUE_NO_PASSWORDURL 中没有 password 部分。13CURLUE_NO_OPTIONSURL 中没有 options 部分。14CURLUE_NO_HOSTURL 中没有 host 部分。15CURLUE_NO_PORTURL 中没有 port 部分。16CURLUE_NO_QUERYURL 中没有 query 部分。17CURLUE_NO_FRAGMENTURL 中没有 fragment 部分。18CURLUE_NO_ZONEIDURL 中没有设置 zone idIPv6 区域标识。19CURLUE_BAD_FILE_URLfile://URL 无效。20CURLUE_BAD_FRAGMENTfragment 部分包含非法字符。21CURLUE_BAD_HOSTNAME主机名包含非法字符。22CURLUE_BAD_IPV6IPv6 地址主机名包含非法字符。23CURLUE_BAD_LOGINlogin 部分包含非法字符。24CURLUE_BAD_PASSWORDpassword 部分包含非法字符。25CURLUE_BAD_PATHpath 部分包含非法字符。26CURLUE_BAD_QUERYquery 部分包含非法字符。27CURLUE_BAD_SCHEMEscheme 部分包含非法字符。28CURLUE_BAD_SLASHESURL 中的斜杠数量非法。29CURLUE_BAD_USERuser 部分包含非法字符。30CURLUE_LACKS_IDN当前 libcurl 缺少 IDN国际化域名支持。31CURLUE_TOO_LARGE某个值或数据字段超过允许大小。32CURLUE_BACKSLASH在期望正斜杠的位置出现了反斜杠。URL 分隔符是/不是\。CURLHcodeheader 接口错误码header 接口用于查询已接收的响应头典型入口是curl_easy_header()返回CURLHcode。码名称含义0CURLHE_OK一切正常。1CURLHE_BADINDEX不存在所请求索引对应的 header。2CURLHE_MISSING不存在该 header。3CURLHE_NOHEADERS完全没有记录任何 header。4CURLHE_NOREQUEST不存在该请求编号。5CURLHE_OUT_OF_MEMORY资源耗尽。6CURLHE_BAD_ARGUMENT给定参数中有一个或多个错误。7CURLHE_NOT_BUILT_IN构建时禁用了 HTTP 支持或 header API。源码级补充错误处理的最佳实践1. 让错误码翻译自动化四个*_strerror()函数共享同一套实现模式见 lib/strerror.ccurl_easy_strerror()处理CURLcodelib/strerror.ccurl_multi_strerror()处理CURLMcodelib/strerror.ccurl_share_strerror()处理CURLSHcodelib/strerror.ccurl_url_strerror()处理CURLUcodelib/strerror.c。它们返回指向以 NUL 结尾字符串的指针可直接用于日志与诊断输出。2. CURLOPT_ERRORBUFFER 提供运行时细节错误码本身往往只能定位大类例如 35 号CURLE_SSL_CONNECT_ERROR可能是证书格式、路径、权限、密码等任何一种问题而 CURLOPT_ERRORBUFFER 提供的字符串则指向具体根因。文档明确建议无论什么情况设置CURLOPT_ERRORBUFFER都是好主意。它的缓冲区大小由CURL_ERROR_SIZE常量决定定义于公开头文件中分配时直接使用该常量即可。3. 典型错误码与对应选项的排查路径文档中多个错误码直接指向可调节的选项形成清晰的排查路径12CURLE_FTP_ACCEPT_TIMEOUT→ 调整 CURLOPT_ACCEPTTIMEOUT_MS22CURLE_HTTP_RETURNED_ERROR→ 检查 CURLOPT_FAILONERROR30CURLE_FTP_PORT_FAILED→ 检查 CURLOPT_FTPPORT45CURLE_INTERFACE_FAILED→ 调整 CURLOPT_INTERFACE47CURLE_TOO_MANY_REDIRECTS→ 调整 CURLOPT_MAXREDIRS90CURLE_SSL_PINNEDPUBKEYNOTMATCH→ 检查 CURLOPT_PINNEDPUBLICKEY91CURLE_SSL_INVALIDCERTSTATUS→ 检查 CURLOPT_SSL_VERIFYSTATUS97CURLE_PROXY→ 通过CURLINFO_PROXY_ERROR获取细分错误4. 判错风格的差异easy 接口curl_easy_perform()返回CURLE_OK0表示成功其余任何非零值均为错误multi 接口CURLM_OK0为成功但CURLM_CALL_MULTI_PERFORM-1与CURLM_CALL_MULTI_SOCKET-1是请立即再次调用的提示而非错误现代版本中它们已不再被返回但了解历史语义有助于阅读旧代码见 docs/libcurl/libcurl-multi.mdCURLUcode / CURLHcode / CURLSHcode均以 0 为成功数值递增与 easy 接口的约定一致。总结libcurl 的五套错误码构成了完整、稳定的诊断体系CURLcode覆盖传输全过程的百余种失败场景协议、DNS、连接、SSL、FTP/TFTP 细节、HTTP/2/3、回调、资源限制等CURLMcode、CURLSHcode、CURLUcode、CURLHcode分别服务 multi、share、URL 解析与 header 查询接口。得益于永不删除、只追加末尾的枚举维护策略这些码值在版本间保持稳定配合CURLOPT_ERRORBUFFER的运行时细节与*_strerror()的固定描述开发者可以在任何 libcurl 应用中快速定位并修复传输故障。更多上下文可继续阅读 docs/libcurl/libcurl-easy.md 与 docs/libcurl/libcurl-url.md。【免费下载链接】curlA command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features项目地址: https://gitcode.com/GitHub_Trending/cu/curl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考