libcurl 错误码参照

英文: libcurl error codes

中文: libcurl 错误码参照

libcurl-errors - libcurl 中的错误代码

描述

本手册页涵盖了 libcurl 中大多数(即使不是全部)可用的错误代码。此外,还介绍了错误发生的原因以及可能的解决方法。

Curlcode

几乎所有“easy”接口函数都会返回 CURLcode 错误代码。无论如何,使用curl_easy_setopt选项CURLOPT_ERRORBUFFER都是一个好主意,因为它会返回一个易于阅读的错误字符串,除了错误代码之外,它还能提供更多关于错误原因的详细信息。您可以调用curl_easy_strerror来根据给定的 CURLcode 编号获取错误字符串。

CURLcode 是下列之一:

CURLE_OK (0)

一切顺利。一切照常进行。

CURLE_UNSUPPORTED_PROTOCOL (1)

您传递给 libcurl 的 URL 使用了 libcurl 不支持的协议。该协议可能是一个您未使用的编译时选项,也可能是一个拼写错误的协议字符串,或者 libcurl 没有代码支持的协议。

CURLE_FAILED_INIT (2)

早期初始化代码失败。这可能是内部错误或问题,也可能是资源问题,导致初始化时无法完成一些基本操作。

CURLE_URL_MALFORMAT (3)

URL 格式不正确。

CURLE_NOT_BUILT_IN (4)

由于构建时决策,此 libcurl 中未找到所请求的功能、协议或选项。这意味着在构建 libcurl 时未启用或明确禁用某个功能或选项,因此为了使其正常运行,您必须重新构建 libcurl。

CURLE_COULDNT_RESOLVE_PROXY (5)

无法解析代理。无法解析给定的代理主机。

CURLE_COULDNT_RESOLVE_HOST (6)

无法解析主机。指定的远程主机未解析。

CURLE_COULDNT_CONNECT (7)

无法连接到主机或代理。

CURLE_WEIRD_SERVER_REPLY (8)

服务器发送的数据 libcurl 无法解析。在 7.51.0 之前的版本中,此错误代码为CURLE_FTP_WEIRD_SERVER_REPLY

CURLE_REMOTE_ACCESS_DENIED (9)

我们被拒绝访问 URL 中指定的资源。对于 FTP,这种情况发生在尝试更改远程目录时。

CURLE_FTP_ACCEPT_FAILED (10)

当使用活动 FTP 会话等待服务器重新连接时,通过控制连接或类似连接发送了错误代码。

CURLE_FTP_WEIRD_PASS_REPLY (11)

将 FTP 密码发送到服务器后,libcurl 期望收到正确的回复。此错误代码表示返回了意外代码。

CURLE_FTP_ACCEPT_TIMEOUT (12)

在等待服务器连接的活动 FTP 会话期间,CURLOPT_ACCEPTTIMEOUT_MS(或内部默认值)超时已过期。

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_HTTP2 (16)

在 HTTP2 帧层检测到一个问题。这个问题比较常见,可能是多个问题之一,详情请参阅错误缓冲区。

CURLE_FTP_COULDNT_SET_TYPE (17)

尝试将传输模式设置为二进制或 ASCII 时收到错误。

CURLE_PARTIAL_FILE (18)

文件传输比预期短或长。这种情况发生在服务器首先报告预期传输大小,然后传送与先前指定大小不匹配的数据时。

CURLE_FTP_COULDNT_RETR_FILE (19)

这要么是对“RETR”命令的奇怪回复,要么是零字节传输完成。

过时的错误 (20)

在现代版本中不再使用。

CURLE_QUOTE_ERROR (21)

向远程服务器发送自定义“QUOTE”命令时,其中一个命令返回了 400 或更高(对于 FTP)的错误代码,或者表明命令未成功完成。

CURLE_HTTP_RETURNED_ERROR (22)

如果CURLOPT_FAILONERROR设置为 TRUE 并且 HTTP 服务器返回错误代码 >= 400,则返回此信息。

CURLE_WRITE_ERROR (23)

将接收的数据写入本地文件时发生错误,或者从写入回调向 libcurl 返回错误。

过时的错误 (24)

在现代版本中不再使用。

CURLE_UPLOAD_FAILED (25)

上传失败。对于 FTP 来说,服务器通常会拒绝 STOR 命令。错误缓冲区通常包含服务器对此的解释。

CURLE_READ_ERROR (26)

读取本地文件时出现问题,或者读取回调返回错误。

CURLE_OUT_OF_MEMORY (27)

内存分配请求失败。这是一个严重的问题,一旦发生,事情就会变得非常糟糕。

CURLE_OPERATION_TIMEDOUT (28)

操作超时。根据条件已达到指定的超时时间。

过时的错误 (29)

在现代版本中不再使用。

CURLE_FTP_PORT_FAILED (30)

FTP PORT 命令返回错误。这通常是因为您没有为 libcurl 指定一个足够好的地址。请参阅CURLOPT_FTPPORT

CURLE_FTP_COULDNT_USE_REST (31)

FTP REST 命令返回错误。如果服务器正常,这种情况不应该发生。

过时的错误(32)

在现代版本中不再使用。

CURLE_RANGE_ERROR (33)

服务器不支持或接受范围请求。

过时的错误 (34)

自 7.56.0 起不再使用。

CURLE_SSL_CONNECT_ERROR (35)

SSL/TLS 握手过程中出现问题。您确实需要错误缓冲区并阅读其中的消息,因为它可以更准确地指出问题所在。问题可能涉及证书(文件格式、路径、权限)、密码等等。

CURLE_BAD_DOWNLOAD_RESUME (36)

由于指定的偏移量超出了文件边界,因此无法恢复下载。

CURLE_FILE_COULDNT_READ_FILE (37)

无法打开使用 FILE:// 指定的文件。很可能是因为文件路径没有标识现有文件。您是否检查过文件权限?

CURLE_LDAP_CANNOT_BIND (38)

LDAP 无法绑定。LDAP 绑定操作失败。

CURLE_LDAP_SEARCH_FAILED (39)

LDAP 搜索失败。

过时的错误 (40)

在现代版本中不再使用。

过时的错误 (41)

自 7.53.0 起不再使用。

CURLE_ABORTED_BY_CALLBACK (42)

回调已中止。回调向 libcurl 返回“中止”。

CURLE_BAD_FUNCTION_ARGUMENT (43)

调用函数时带有错误的参数。

过时的错误 (44)

在现代版本中不再使用。

CURLE_INTERFACE_FAILED (45)

接口错误。指定的传出接口无法使用。请使用CURLOPT_INTERFACE设置传出连接的源 IP 地址。

过时的错误 (46)

在现代版本中不再使用。

CURLE_TOO_MANY_REDIRECTS (47)

重定向次数过多。在执行重定向时,libcurl 会达到最大值。请使用CURLOPT_MAXREDIRS设置限制。

CURLE_UNKNOWN_OPTION (48)

传递给 libcurl 的选项无法识别/未知。请参阅相应文档。这很可能是使用 libcurl 的程序中存在的问题。错误缓冲区可能包含与该选项相关的更具体信息。

CURLE_SETOPT_OPTION_SYNTAX (49)

传递给 setopt 的选项格式错误。有关选项的详细信息,请参阅错误消息。

过时的错误(50-51)

在现代版本中不再使用。

卷发无所获 (52)

服务器没有返回任何内容,在这种情况下,没有得到任何内容被视为错误。

CURLE_SSL_ENGINE_NOTFOUND (53)

未找到指定的加密引擎。

CURLE_SSL_ENGINE_SETFAILED (54)

无法将选定的 SSL 加密引擎设置为默认值。

CURLE_SEND_ERROR (55)

发送网络数据失败。

CURLE_RECV_ERROR (56)

接收网络数据失败。

过时的错误 (57)

在现代版本中不再使用。

CURLE_SSL_CERTPROBLEM (58)

本地客户端证书存在问题。

CURLE_SSL_CIPHER (59)

无法使用指定的密码。

CURLE_PEER_FAILED_VERIFICATION (60)

远程服务器的 SSL 证书或 SSH 指纹被视为不正常。此错误代码自 7.62.0 起已与 CURLE_SSL_CACERT 统一。其先前值为 51。

CURLE_BAD_CONTENT_ENCODING (61)

无法识别的传输编码。

过时的错误(62)

在现代版本中不再使用。

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 服务器绝不会返回此错误。

过时的错误(75-76)

在现代版本中不再使用。

CURLE_SSL_CACERT_BADFILE (77)

读取 SSL CA 证书时出现问题(路径?访问权限?)

CURLE_REMOTE_FILE_NOT_FOUND (78)

URL 中引用的资源不存在。

CURLE_SSH (79)

SSH 会话期间发生未指定的错误。

CURLE_SSL_SHUTDOWN_FAILED (80)

无法关闭 SSL 连接。

再次卷曲 (81)

套接字尚未准备好发送/接收。请等待其准备就绪后重试。此返回码仅由curl_easy_recvcurl_easy_send返回(已在 7.18.2 版本中新增)。

CURLE_SSL_CRL_BADFILE (82)

无法加载 CRL 文件(7.19.0 版新增)

CURLE_SSL_ISSUER_ERROR (83)

发卡机构检查失败(7.19.0 版新增)

CURLE_FTP_PRET_FAILED (84)

FTP 服务器完全无法理解 PRET 命令,或者不支持指定的参数。使用CURLOPT_CUSTOMREQUEST时请务必小心,因为自定义的 LIST 命令也会在 PASV 之前随 PRET 命令一起发送。(7.20.0 新增)

CURLE_RTSP_CSEQ_ERROR (85)

RTSP CSeq 编号不匹配。

CURLE_RTSP_SESSION_ERROR (86)

RTSP 会话标识符不匹配。

CURLE_FTP_BAD_FILE_LIST (87)

无法解析 FTP 文件列表(在 FTP 通配符下载期间)。

CURLE_CHUNK_FAILED (88)

Chunk回调报告错误。

CURLE_NO_CONNECTION_AVAILABLE (89)

(仅供内部使用,libcurl 永远不会返回)无可用连接,会话已排队。(在 7.30.0 中添加)

CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)

无法匹配使用CURLOPT_PINNEDPUBLICKEY指定的固定密钥。

CURLE_SSL_INVALIDCERTSTATUS (91)

当使用CURLOPT_SSL_VERIFYSTATUS询问时,状态返回失败。

CURLE_HTTP2_STREAM (92)

HTTP/2 框架层中的流错误。

CURLE_RECURSIVE_API_CALL (93)

从回调内部调用了 API 函数。

CURLE_AUTH_ERROR (94)

身份验证函数返回错误。

CURLE_HTTP3 (95)

HTTP/3 层检测到一个问题。这个问题比较常见,可能是多个问题之一,详情请参阅错误缓冲区。

CURLE_QUIC_CONNECT_ERROR (96)

QUIC 连接错误。此错误可能是由 SSL 库错误引起的。QUIC 是用于 HTTP/3 传输的协议。

CURLE_PROXY (97)

代理握手错误。CURLINFO_PROXY_ERROR提供有关具体问题的额外详细信息。

CURLE_SSL_CLIENTCERT (98)

需要 SSL 客户端证书。

CURLE_UNRECOVERABLE_POLL (99)

对 poll() 或 select() 的内部调用返回了无法恢复的错误。

卷曲过大 (100)

值或数据字段超出了允许值。

CURLE_ECH_REQUIRED (101)

尝试过 ECH 但失败了。

Curlmcode

这是 libcurl 多接口函数使用的通用返回码。另请考虑curl_multi_strerror

CURLM_CALL_MULTI_PERFORM (-1)

这实际上并非错误。这意味着您应该再次调用curl_multi_perform ,并且不要在调用期间执行 select() 或类似操作。在 7.20.0 版本(发布于 2010 年 2 月 9 日)之前, curl_multi_perform可能会返回此错误代码,但在更高版本中,此返回代码不再使用。

CURLM_OK (0)

一切都很好。

CURLM_BAD_HANDLE (1)

传入的句柄不是有效的CURLM句柄。

CURLM_BAD_EASY_HANDLE (2)

简易句柄无效/无效。这可能意味着它根本不是简易句柄,或者该句柄已被此句柄或其他多句柄使用。

CURLM_OUT_OF_MEMORY (3)

你完了。

CURLM_INTERNAL_ERROR (4)

仅当 libcurl 出现错误时才会返回此信息。请向我们报告。

CURLM_BAD_SOCKET (5)

传入的套接字不是 libcurl 已知的有效套接字。(在 7.15.4 中添加)

CURLM_UNKNOWN_OPTION (6)

curl_multi_setopt() 带有不受支持的选项(在 7.15.4 中添加)

CURLM_ADDED_ALREADY (7)

已添加到多句柄的简易句柄被尝试再次添加。(已在 7.32.1 版中添加)

CURLM_RECURSIVE_API_CALL (8)

从回调内部调用了 API 函数。

CURLM_WAKEUP_FAILURE (9)

唤醒不可用或失败。

CURLM_BAD_FUNCTION_ARGUMENT (10)

调用函数时带有错误的参数。

CURLM_ABORTED_BY_CALLBACK (11)

多句柄回调返回错误。

CURLM_UNRECOVERABLE_POLL (12)

对 poll() 或 select() 的内部调用返回了无法恢复的错误。

Curlsh代码

“share” 接口会返回一个CURLSHcode来指示错误发生的时间。另请考虑curl_share_strerror

CURLSHE_OK (0)

一切顺利。一切照常进行。

CURLSHE_BAD_OPTION (1)

向函数传递了无效选项。

CURLSHE_IN_USE (2)

共享对象当前正在使用中。

CURLSHE_INVALID (3)

无效的共享对象被传递给了该函数。

CURLSHE_NOMEM (4)

可用内存不足。(7.12.0 新增)

CURLSHE_NOT_BUILT_IN (5)

无法执行请求的共享,因为您使用的库未启用该特定功能。(7.23.0 新增)

Curlucode

URL 接口会返回一个CURLUcode来指示错误发生的时间。另请考虑curl_url_strerror

CURLUE_OK (0)

一切顺利。一切照常进行。

CURLUE_BAD_HANDLE (1)

传递了一个无效的 URL 句柄作为参数。

CURLUE_BAD_PARTPOINTER (2)

无效的“部分”参数作为参数传递。

CURLUE_MALFORMED_INPUT (3)

格式错误的输入被传递给 URL API 函数。

CURLUE_BAD_PORT_NUMBER (4)

端口号不是 0 至 65535 之间的十进制数。

CURLUE_UNSUPPORTED_SCHEME (5)

此 libcurl 构建不支持给定的 URL 方案。

CURLUE_URLDECODE (6)

URL 解码错误,很可能是因为输入内容混乱。

CURLUE_内存不足 (7)

记忆功能失败。

CURLUE_USER_NOT_ALLOWED (8)

禁止时,凭据已在 URL 中传递。

CURLUE_UNKNOWN_PART (9)

未知的部件 ID 被传递给 URL API 函数。

CURLUE_NO_SCHEME (10)

URL 中没有方案部分。

CURLUE_NO_USER (11)

URL 中没有用户部分。

CURLUE_无密码 (12)

URL 中没有密码部分。

CURLUE_NO_OPTIONS (13)

URL 中没有选项部分。

CURLUE_NO_HOST (14)

URL 中没有主机部分。

CURLUE_NO_PORT (15)

URL 中没有端口部分。

CURLUE_NO_QUERY (16)

URL 中没有查询部分。

CURLUE_NO_FRAGMENT (17)

URL 中没有片段部分。

CURLUE_NO_ZONEID (18)

URL 中未设置区域 ID。

CURLUE_BAD_FILE_URL (19)

file:// URL 无效。

CURLUE_BAD_FRAGMENT (20)

URL 的片段部分包含错误或无效的字符。

CURLUE_BAD_HOSTNAME (21)

主机名包含错误或无效的字符。

CURLUE_BAD_IPV6 (22)

IPv6 地址主机名包含错误或无效的字符。

CURLUE_BAD_LOGIN (23)

URL 的登录部分包含错误或无效的字符。

CURLUE_BAD_PASSWORD (24)

URL 的密码部分包含错误或无效的字符。

CURLUE_BAD_PATH (25)

URL 的路径部分包含错误或无效的字符。

CURLUE_BAD_QUERY (26)

URL 的查询部分包含错误或无效的字符。

CURLUE_BAD_SCHEME (27)

URL 的方案部分包含错误或无效的字符。

CURLUE_BAD_SLASHES (28)

URL 包含无效数量的斜杠。

CURLUE_BAD_USER (29)

URL 的用户部分包含错误或无效的字符。

CURLUE_LACKS_IDN (30)

libcurl 缺乏 IDN 支持。

卷发过大 (31)

值或数据字段大于允许值。

Curlhcode

标头接口返回一个CURLHcode来指示何时发生错误。

CURLHE_OK (0)

一切顺利。一切照常进行。

CURLHE_BADINDEX (1)

没有具有请求索引的标题。

CURLHE_MISSING (2)

不存在这样的标题。

CURLHE_NOHEADERS (3)

根本没有记录任何标题。

CURLHE_NOREQUEST (4)

没有此请求编号。

CURLHE_OUT_OF_MEMORY (5)

资源不足

CURLHE_BAD_ARGUMENT (6)

给定的一个或多个参数不正确。

CURLHE_NOT_BUILT_IN (7)

HTTP 支持或标头 API 已在构建中被禁用。

Comment

华计科技: 中华自主研发设计

华计科技为您提供咨询服务,IT技术支持和项目开发: (+86) 156 2654 0671

联系我们