这个文档是小编在curl官网上使用谷歌翻译翻译的,详细信息看官网
描述
此手册页包含 libcurl 中的大部分(如果不是全部)可用的错误代码。还包括它们发生的原因以及您可以采取哪些措施来解决问题。
卷码
几乎所有“简单”的接口函数都返回一个 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)
作为对 PASV 或 EPSV 命令的响应,libcurl 未能从服务器返回合理的结果。服务器有缺陷。
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”命令的奇怪回复,要么是零字节传输完成。
CURLE_QUOTE_ERROR (21)
向远程服务器发送自定义“QUOTE”命令时,其中一个命令返回的错误代码为 400 或更高(对于 FTP)或以其他方式指示命令未成功完成。
CURLE_HTTP_RETURNED_ERROR (22)
如果CURLOPT_FAILONERROR设置为 TRUE 并且 HTTP 服务器返回 >= 400 的错误代码,则会返回此信息。
CURLE_WRITE_ERROR (23)
将接收到的数据写入本地文件时发生错误,或者从写入回调将错误返回给 libcurl。
CURLE_UPLOAD_FAILED (25)
开始上传失败。对于 FTP,服务器通常拒绝 STOR 命令。错误缓冲区通常包含服务器对此的解释。
CURLE_READ_ERROR (26)
读取本地文件时出现问题或读取回调返回错误。
CURLE_OUT_OF_MEMORY (27)
内存分配请求失败。这是严重的错误,如果发生这种情况,事情就会严重搞砸。
CURLE_OPERATION_TIMEDOUT (28)
操作超时。根据条件达到指定的超时期限。
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_BAD_DOWNLOAD_RESUME (36)
无法恢复下载,因为指定的偏移量超出了文件边界。
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。
CURLE_BAD_FUNCTION_ARGUMENT (43)
使用错误参数调用函数。
CURLE_INTERFACE_FAILED (45)
接口错误。无法使用指定的传出接口。使用CURLOPT_INTERFACE 设置用于传出连接的源 IP 地址的接口。
CURLE_TOO_MANY_REDIRECTS (47)
重定向太多。跟随重定向时,libcurl 达到最大数量。使用CURLOPT_MAXREDIRS设置您的限制。
CURLE_UNKNOWN_OPTION (48)
传递给 libcurl 的选项无法识别/未知。请参阅相应的文档。这很可能是使用 libcurl 的程序中的问题。错误缓冲区可能包含有关它所关注的确切选项的更具体信息。
CURLE_SETOPT_OPTION_SYNTAX (49)
传递给 setopt 的选项格式错误。有关什么选项的详细信息,请参阅错误消息。
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_PEER_FAILED_VERIFICATION (60)
远程服务器的 SSL 证书或 SSH md5 指纹被认为不正确。自 7.62.0 起,此错误代码已与 CURLE_SSL_CACERT 统一。它之前的值为 51。
CURLE_BAD_CONTENT_ENCODING (61)
无法识别的传输编码。
CURLE_LDAP_INVALID_URL (62)
此错误代码自 7.82.0 起已弃用,无法再返回。
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)
URL 中引用的资源不存在。
CURLE_SSH (79)
SSH 会话期间发生未指定的错误。
CURLE_SSL_SHUTDOWN_FAILED (80)
未能关闭 SSL 连接。
CURLE_AGAIN (81)
套接字尚未准备好发送/接收,等待它准备好再试一次。此返回码仅从curl_easy_recv和curl_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 CMD 发送。(在 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)
块回调报告错误。
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_SSL_CLIENTCERT (98)
需要 SSL 客户端证书。
CURLE_UNRECOVERABLE_POLL (99)
对 poll() 或 select() 的内部调用返回了不可恢复的错误。
CURLE_OBSOLETE *
永远不会返回这些错误代码。它们在旧的 libcurl 版本中使用,目前未使用。
卷码
这是 libcurl 多接口中的函数使用的通用返回码。还要考虑curl_multi_strerror。
CURLM_CALL_MULTI_PERFORM (-1)
这并不是真正的错误。这意味着您应该再次调用curl_multi_perform而无需在两者之间执行 select() 或类似操作。在版本 7.20.0(2010 年 2 月 9 日发布)之前,这可以由curl_multi_perform返回,但在以后的版本中,从不使用此返回代码。
CURLM_CALL_MULTI_SOCKET (-1)
CURLM_CALL_MULTI_PERFORM 的别名。现代 libcurl 版本从未返回。
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() 的内部调用返回了不可恢复的错误。
卷码
“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 中添加)
曲码
URL 接口将返回一个 CURLUcode 以指示何时发生错误。还要考虑curl_url_strerror。
CURLUE_BAD_HANDLE (1)
一个无效的 CURLU 指针作为参数传递。
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_OUT_OF_MEMORY (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_NO_PASSWORD (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 中没有设置 zoneid。
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 的用户部分包含错误或无效字符。