libcurl简单用法
1.全局初始化API
应用程序在使用libcurl之前,必须先初始化libcurl。libcurl只需初始化一次。可以使用以下语句进行初始化:
CURLcode curl_global_init(int flags);
一般flags使用CURL_GLOBAL_ALL
当应用程序不再使用libcurl的时候,应该调用curl_global_cleanup[声明:void curl_global_cleanup(void)]释放相关的资源。
在程序中,应当避免多次调用curl_global_init和curl_global_cleanup。它们只能被调用一次。
返回值0成功,非0值代表错误。若错误,所有api不得调用。
#define CURL_GLOBAL_SSL (1<<0)//设定支持SSL
#define CURL_GLOBAL_WIN32 (1<<1)//libcurl初始化winsock库
#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
#define CURL_GLOBAL_NOTHING 0
#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL
#define CURL_GLOBAL_ACK_EINTR (1<<2)//CURL_GLOBAL_ACK_EINTR 在7.69.0以后将没有任何作用。在在7.69.0之前:当设置此标志时,curl将在连接或等待数据时确认EINTR条件。 否则,curl将等待直到完全超时结束。
2.curl其他常用API
2.1.easy interface
最基本的原则是绝对不要同时在多个线程之间共享一个libcurl的句柄。确保任何时候一个句柄只是在一个线程里使用。你可以在多个线程之间传递句柄,但是你不能使用。
libcurl是线程安全的,除了以下两种情况:信号量和SSL/TLS句柄。信号量用于超时失效名字解析(在域名解析的时候)。
CURL *curl_easy_init( );
(1)初始化
CURL *curl_easy_init();
//此函数必须是要调用的第一个函数,它返回一个 CURL 简易句柄,您必须将其用作简易界面中其他函数的输入。当操作完成时,这个调用必须有一个对应的curl_easy_cleanup调用。
(2)清理回收函数
void curl_easy_cleanup(CURL * handle );
//此函数必须是调用简单会话的最后一个函数。它与curl_easy_init函数相反
(3)执行curl动作(如HTTP的POST GET 等)
CURLcode curl_easy_perform(CURL *easy_handle);
//在curl_easy_init和所有curl_easy_setopt调用完成后调用此函数,并将按照选项中的描述执行传输.
//以阻塞方式执行整个请求,并在完成或失败时返回。对于非阻塞行为,请参阅curl_multi_perform。
//让函数先返回,然后再调用它。如果你想要并行传输,你必须使用几个 curl easy_handles。
//CURLE_OK (0) 表示一切正常.
(4)获取curl句柄属性函数
CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );
//返回值CURLE_OK (0)表示正常
info 取值如下:
CURLINFO_EFFECTIVE_METHOD
上次使用的 HTTP 方法。见CURLINFO_EFFECTIVE_METHOD
上次使用的网址。见CURLINFO_EFFECTIVE_URL
最后收到的响应代码。见CURLINFO_RESPONSE_CODE
引用标头。见CURLINFO_REFERER
最后一个代理 CONNECT 响应代码。见CURLINFO_HTTP_CONNECTCODE
连接中使用的 http 版本。见CURLINFO_HTTP_VERSION
检索文档的远程时间。见CURLINFO_FILETIME
检索文档的远程时间。见CURLINFO_FILETIME_T
上次传输的总时间。见CURLINFO_TOTAL_TIME
上次传输的总时间。见CURLINFO_TOTAL_TIME_T
从开始到名称解析完成的时间。见CURLINFO_NAMELOOKUP_TIME
从开始到名称解析完成的时间。见CURLINFO_NAMELOOKUP_TIME_T
从开始到远程主机或代理完成的时间。见CURLINFO_CONNECT_TIME
从开始到远程主机或代理完成的时间。见CURLINFO_CONNECT_TIME_T
从开始到 SSL/SSH 握手完成的时间。见CURLINFO_APPCONNECT_TIME
从开始到 SSL/SSH 握手完成的时间。见CURLINFO_APPCONNECT_TIME_T
从开始到传输开始之前的时间。见CURLINFO_PRETRANSFER_TIME
从开始到传输开始之前的时间。见CURLINFO_PRETRANSFER_TIME_T
从开始到收到第一个字节的时间。见CURLINFO_STARTTRANSFER_TIME
从开始到收到第一个字节的时间。见CURLINFO_STARTTRANSFER_TIME_T
最终传输之前所有重定向步骤所用的时间。见CURLINFO_REDIRECT_TIME
最终传输之前所有重定向步骤所用的时间。见CURLINFO_REDIRECT_TIME_T
遵循的重定向总数。见CURLINFO_REDIRECT_COUNT
如果您启用了重定向,重定向会将您带到的 URL。见CURLINFO_REDIRECT_URL
(已弃用)上传的字节数。见CURLINFO_SIZE_UPLOAD
上传的字节数。见CURLINFO_SIZE_UPLOAD_T
(已弃用)下载的字节数。见CURLINFO_SIZE_DOWNLOAD
下载的字节数。见CURLINFO_SIZE_DOWNLOAD_T
(已弃用)平均下载速度。见CURLINFO_SPEED_DOWNLOAD
平均下载速度。见CURLINFO_SPEED_DOWNLOAD_T
(已弃用)平均上传速度。见CURLINFO_SPEED_UPLOAD
平均上传速度。见CURLINFO_SPEED_UPLOAD_T
收到的所有标头的字节数。见CURLINFO_HEADER_SIZE
发出的 HTTP 请求中发送的字节数。见CURLINFO_REQUEST_SIZE
证书验证结果。见CURLINFO_SSL_VERIFYRESULT
详细的代理错误。见CURLINFO_PROXY_ERROR
CURLINFO_PROXY_SSL_VERIFYRESULT
代理证书验证结果。见CURLINFO_PROXY_SSL_VERIFYRESULT
OpenSSL 加密引擎列表。见CURLINFO_SSL_ENGINES
CURLINFO_CONTENT_LENGTH_DOWNLOAD
(已弃用)来自 Content-Length 标头的内容长度。见CURLINFO_CONTENT_LENGTH_DOWNLOAD
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
来自 Content-Length 标头的内容长度。见CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
CURLINFO_CONTENT_LENGTH_UPLOAD
(已弃用)上传大小。见CURLINFO_CONTENT_LENGTH_UPLOAD
CURLINFO_CONTENT_LENGTH_UPLOAD_T
上传大小。见CURLINFO_CONTENT_LENGTH_UPLOAD_T
来自 Content-Type 标头的内容类型。见CURLINFO_CONTENT_TYPE
来自 Retry-After 标头的值。见CURLINFO_RETRY_AFTER
用户的私有数据指针。见CURLINFO_PRIVATE
可用的 HTTP 身份验证方法。见CURLINFO_HTTPAUTH_AVAIL
可用的 HTTP 代理身份验证方法。见CURLINFO_PROXYAUTH_AVAIL
上次连接失败的 errno。见CURLINFO_OS_ERRNO
用于先前传输的新成功连接数。见CURLINFO_NUM_CONNECTS
上次连接的 IP 地址。见CURLINFO_PRIMARY_IP
上次连接的端口。见CURLINFO_PRIMARY_PORT
上次连接的本端IP地址。见CURLINFO_LOCAL_IP
上次连接的本端端口。见CURLINFO_LOCAL_PORT
所有已知 cookie 的列表。见CURLINFO_COOKIELIST
最后使用的套接字。见CURLINFO_LASTSOCKET
会话的活动套接字。见CURLINFO_ACTIVESOCKET
登录FTP服务器后的入口路径。见CURLINFO_FTP_ENTRY_PATH
证书链。见CURLINFO_CERTINFO
可用于进一步处理的 TLS 会话信息。见CURLINFO_TLS_SSL_PTR
可用于进一步处理的 TLS 会话信息。请参阅CURLINFO_TLS_SESSION。已弃用的选项,请改用CURLINFO_TLS_SSL_PTR!
是否满足时间条件或 304 HTTP 响应。见CURLINFO_CONDITION_UNMET
RTSP 会话 ID。见CURLINFO_RTSP_SESSION_ID
接下来将使用的 RTSP CSeq。见CURLINFO_RTSP_CLIENT_CSEQ
接下来预计的 RTSP CSeq。见CURLINFO_RTSP_SERVER_CSEQ
上次接收到的 RTSP CSeq。见CURLINFO_RTSP_CSEQ_RECV
用于连接的协议。(在 7.52.0 中添加)参见CURLINFO_PROTOCOL
用于连接的方案。(在 7.52.0 中添加)参见CURLINFO_SCHEME
(5)设置curl句柄属性函数
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
返回值CURLE_OK(0),代表成功.
option取值如下:
CURLOPT_VERBOSE
显示详细信息。见CURLOPT_VERBOSE
在正文输出中包含标题。见CURLOPT_HEADER
关闭进度表。见CURLOPT_NOPROGRESS
不要安装信号处理程序。见CURLOPT_NOSIGNAL
根据文件名模式传输多个文件。见CURLOPT_WILDCARDMATCH
回调选项
写入数据的回调。见CURLOPT_WRITEFUNCTION
传递给写回调的数据指针。见CURLOPT_WRITEDATA
读取数据的回调。见CURLOPT_READFUNCTION
传递给读取回调的数据指针。见CURLOPT_READDATA
I/O 操作的回调。见CURLOPT_IOCTLFUNCTION
传递给 I/O 回调的数据指针。见CURLOPT_IOCTLDATA
寻道操作的回调。见CURLOPT_SEEKFUNCTION
传递给搜索回调的数据指针。见CURLOPT_SEEKDATA
sockopt 操作的回调。见CURLOPT_SOCKOPTFUNCTION
传递给 sockopt 回调的数据指针。见CURLOPT_SOCKOPTDATA
创建套接字的回调。见CURLOPT_OPENSOCKETFUNCTION
传递给打开套接字回调的数据指针。见CURLOPT_OPENSOCKETDATA
关闭套接字的回调。见CURLOPT_CLOSESOCKETFUNCTION
传递给关闭套接字回调的数据指针。见CURLOPT_CLOSESOCKETDATA
进度表的过时回调。见CURLOPT_PROGRESSFUNCTION
传递给进度表回调的数据指针。见CURLOPT_PROGRESSDATA
进度表的回调。见CURLOPT_XFERINFOFUNCTION
传递给进度表回调的数据指针。见CURLOPT_XFERINFODATA
用于写入接收到的标头的回调。见CURLOPT_HEADERFUNCTION
传递给标头回调的数据指针。见CURLOPT_HEADERDATA
调试信息的回调。见CURLOPT_DEBUGFUNCTION
传递给调试回调的数据指针。见CURLOPT_DEBUGDATA
SSL 上下文逻辑的回调。见CURLOPT_SSL_CTX_FUNCTION
传递给 SSL 上下文回调的数据指针。见CURLOPT_SSL_CTX_DATA
CURLOPT_CONV_TO_NETWORK_FUNCTION
代码库转换的回调。见CURLOPT_CONV_TO_NETWORK_FUNCTION
CURLOPT_CONV_FROM_NETWORK_FUNCTION
代码库转换的回调。见CURLOPT_CONV_FROM_NETWORK_FUNCTION
CURLOPT_CONV_FROM_UTF8_FUNCTION
代码库转换的回调。见CURLOPT_CONV_FROM_UTF8_FUNCTION
RTSP 交错数据的回调。见CURLOPT_INTERLEAVEFUNCTION
传递给 RTSP 交错回调的数据指针。见CURLOPT_INTERLEAVEDATA
块的通配符下载开始的回调。见CURLOPT_CHUNK_BGN_FUNCTION
块的通配符下载结束的回调。见CURLOPT_CHUNK_END_FUNCTION
传递给块回调的数据指针。见CURLOPT_CHUNK_DATA
通配符匹配回调。见CURLOPT_FNMATCH_FUNCTION
传递给通配符匹配回调的数据指针。见CURLOPT_FNMATCH_DATA
CURLOPT_SUPPRESS_CONNECT_HEADERS
禁止来自用户回调的代理 CONNECT 响应标头。见CURLOPT_SUPPRESS_CONNECT_HEADERS
CURLOPT_RESOLVER_START_FUNCTION
在开始新的解析请求之前调用的回调。见CURLOPT_RESOLVER_START_FUNCTION
传递给解析器启动回调的数据指针。见CURLOPT_RESOLVER_START_DATA
在建立连接之后但在对该连接发出请求之前调用的回调。见CURLOPT_PREREQFUNCTION
传递给 CURLOPT_PREREQFUNCTION 回调的数据指针。见CURLOPT_PREREQDATA
错误选项
错误消息缓冲区。见CURLOPT_ERRORBUFFER
stderr 替换流。见CURLOPT_STDERR
因 HTTP 4xx 错误而失败。CURLOPT_FAILONERROR
继续发送 HTTP >= 300 错误。CURLOPT_KEEP_SENDING_ON_ERROR
网络选项
要处理的 URL。见CURLOPT_URL
禁用压缩路径中的 /../ 和 /./ 序列。见CURLOPT_PATH_AS_IS
允许的协议。见CURLOPT_PROTOCOLS
允许重定向到的协议。见CURLOPT_REDIR_PROTOCOLS
默认协议。见CURLOPT_DEFAULT_PROTOCOL
要使用的代理。见CURLOPT_PROXY
要使用的袜子代理。见CURLOPT_PRE_PROXY
要使用的代理端口。见CURLOPT_PROXYPORT
代理类型。见CURLOPT_PROXYTYPE
从代理使用中过滤掉主机。CURLOPT_NOPROXY
通过 HTTP 代理隧道。CURLOPT_HTTPPROXYTUNNEL
连接到特定的主机和端口。见CURLOPT_CONNECT_TO
Socks5 认证方法。见CURLOPT_SOCKS5_AUTH
Socks5 GSSAPI 服务名称。CURLOPT_SOCKS5_GSSAPI_SERVICE
Socks5 GSSAPI NEC 模式。见CURLOPT_SOCKS5_GSSAPI_NEC
代理身份验证服务名称。CURLOPT_PROXY_SERVICE_NAME
发送 HAProxy PROXY 协议 v1 标头。见CURLOPT_HAPROXYPROTOCOL
身份验证服务名称。CURLOPT_SERVICE_NAME
将本地连接绑定到此。见CURLOPT_INTERFACE
将本地连接绑定到此端口。见CURLOPT_LOCALPORT
将本地连接绑定到端口范围。见CURLOPT_LOCALPORTRANGE
DNS 缓存超时。见CURLOPT_DNS_CACHE_TIMEOUT
OBSOLETE 启用全局 DNS 缓存。见CURLOPT_DNS_USE_GLOBAL_CACHE
使用此 DoH 服务器进行名称解析。见CURLOPT_DOH_URL
询问备用缓冲区大小。见CURLOPT_BUFFERSIZE
要连接的端口号。见CURLOPT_PORT
启用 TFO、TCP 快速打开。见CURLOPT_TCP_FASTOPEN
禁用 Nagle 算法。见CURLOPT_TCP_NODELAY
本地地址的 IPv6 范围。见CURLOPT_ADDRESS_SCOPE
启用 TCP 保持活动。见CURLOPT_TCP_KEEPALIVE
发送保持连接之前的空闲时间。见CURLOPT_TCP_KEEPIDLE
保持活动探测之间的间隔。见CURLOPT_TCP_KEEPINTVL
Unix 域套接字的路径。见CURLOPT_UNIX_SOCKET_PATH
抽象 Unix 域套接字的路径。见CURLOPT_ABSTRACT_UNIX_SOCKET
名称和密码选项(身份验证)
启用 .netrc 解析。见CURLOPT_NETRC
.netrc 文件名。见CURLOPT_NETRC_FILE
用户名和密码。见CURLOPT_USERPWD
代理用户名和密码。见CURLOPT_PROXYUSERPWD
用户名。见CURLOPT_USERNAME
密码。见CURLOPT_PASSWORD
登录选项。见CURLOPT_LOGIN_OPTIONS
代理用户名。见CURLOPT_PROXYUSERNAME
代理密码。见CURLOPT_PROXYPASSWORD
HTTP 服务器身份验证方法。见CURLOPT_HTTPAUTH
TLS 认证用户名。见CURLOPT_TLSAUTH_USERNAME
CURLOPT_PROXY_TLSAUTH_USERNAME
代理 TLS 身份验证用户名。见CURLOPT_PROXY_TLSAUTH_USERNAME
TLS 认证密码。见CURLOPT_TLSAUTH_PASSWORD
CURLOPT_PROXY_TLSAUTH_PASSWORD
代理 TLS 身份验证密码。见CURLOPT_PROXY_TLSAUTH_PASSWORD
TLS 身份验证方法。见CURLOPT_TLSAUTH_TYPE
代理 TLS 身份验证方法。见CURLOPT_PROXY_TLSAUTH_TYPE
HTTP 代理身份验证方法。见CURLOPT_PROXYAUTH
SASL 授权身份(要充当的身份)。见CURLOPT_SASL_AUTHZID
启用 SASL 初始响应。见CURLOPT_SASL_IR
OAuth2 不记名令牌。见CURLOPT_XOAUTH2_BEARER
CURLOPT_DISALLOW_USERNAME_IN_URL
不允许在 URL 中使用用户名。见CURLOPT_DISALLOW_USERNAME_IN_URL
Http 选项
自动设置 Referer: 标头。见CURLOPT_AUTOREFERER
接受编码和自动解压缩数据。见CURLOPT_ACCEPT_ENCODING
请求传输编码。见CURLOPT_TRANSFER_ENCODING
遵循 HTTP 重定向。见CURLOPT_FOLLOWLOCATION
不要将身份验证限制为原始主机。CURLOPT_UNRESTRICTED_AUTH
要遵循的最大重定向数。见CURLOPT_MAXREDIRS
POST 后如何处理重定向。见CURLOPT_POSTREDIR
发出 HTTP PUT 请求。见CURLOPT_PUT
发出 HTTP POST 请求。见CURLOPT_POST
使用此数据发送 POST。见CURLOPT_POSTFIELDS
POST 数据有这么大。见CURLOPT_POSTFIELDSIZE
POST 数据有这么大。见CURLOPT_POSTFIELDSIZE_LARGE
使用此数据发送 POST - 并复制它。见CURLOPT_COPYPOSTFIELDS
多部分 formpost HTTP POST。见CURLOPT_HTTPPOST
参考:标题。见CURLOPT_REFERER
用户代理:标题。见CURLOPT_USERAGENT
自定义 HTTP 标头。见CURLOPT_HTTPHEADER
控制自定义标题。见CURLOPT_HEADEROPT
发送到代理的自定义 HTTP 标头。见CURLOPT_PROXYHEADER
200 OK 的替代版本。见CURLOPT_HTTP200ALIASES
要发送的 Cookie。见CURLOPT_COOKIE
从中读取 cookie 的文件。见CURLOPT_COOKIEFILE
要将 cookie 写入的文件。见CURLOPT_COOKIEJAR
开始一个新的 cookie 会话。见CURLOPT_COOKIESESSION
添加或控制 cookie。见CURLOPT_COOKIELIST
指定 Alt-Svc: 缓存文件名。见CURLOPT_ALTSVC
启用并配置 Alt-Svc: 处理。见CURLOPT_ALTSVC_CTRL
设置 HSTS 缓存文件。见CURLOPT_HSTS
启用 HSTS。见CURLOPT_HSTS_CTRL
设置 HSTS 读取回调。见CURLOPT_HSTSREADFUNCTION
传递指向 HSTS 读取回调的指针。见CURLOPT_HSTSREADDATA
设置 HSTS 写回调。见CURLOPT_HSTSWRITEFUNCTION
传递指向 HSTS 写入回调的指针。见CURLOPT_HSTSWRITEDATA
执行 HTTP GET 请求。见CURLOPT_HTTPGET
设置请求目标。CURLOPT_REQUEST_TARGET
要使用的 HTTP 版本。CURLOPT_HTTP_VERSION
允许 HTTP/0.9 响应。CURLOPT_HTTP09_ALLOWED
忽略内容长度。见CURLOPT_IGNORE_CONTENT_LENGTH
禁用内容解码。见CURLOPT_HTTP_CONTENT_DECODING
CURLOPT_HTTP_TRANSFER_DECODING
禁用传输解码。见CURLOPT_HTTP_TRANSFER_DECODING
100-继续超时。见CURLOPT_EXPECT_100_TIMEOUT_MS
设置用于发送尾随标头的回调。见CURLOPT_TRAILERFUNCTION
传递给尾随标头回调的自定义指针。见CURLOPT_TRAILERDATA
等待连接到管道上。见CURLOPT_PIPEWAIT
这个 HTTP/2 流依赖于另一个。见CURLOPT_STREAM_DEPENDS
这个 HTTP/2 流完全依赖于另一个。见CURLOPT_STREAM_DEPENDS_E
设置此 HTTP/2 流的权重。见CURLOPT_STREAM_WEIGHT
SMTP 选项
发件人地址。见CURLOPT_MAIL_FROM
收件人地址。见CURLOPT_MAIL_RCPT
认证地址。见CURLOPT_MAIL_AUTH
允许 RCPT TO 命令对某些收件人失败。见CURLOPT_MAIL_RCPT_ALLLOWFAILS
Tftp 选项
TFTP 块大小。见CURLOPT_TFTP_BLKSIZE
不要发送 TFTP 选项请求。见CURLOPT_TFTP_NO_OPTIONS
FTP选项
使用主动 FTP。见CURLOPT_FTPPORT
传输前要运行的命令。见CURLOPT_QUOTE
传输后运行的命令。见CURLOPT_POSTQUOTE
在传输之前运行的命令。见CURLOPT_PREQUOTE
附加到远程文件。见CURLOPT_APPEND
使用 EPTR。见CURLOPT_FTP_USE_EPRT
使用 EPSV。见CURLOPT_FTP_USE_EPSV
使用 PRET。见CURLOPT_FTP_USE_PRET
CURLOPT_FTP_CREATE_MISSING_DIRS
在远程服务器上创建丢失的目录。见CURLOPT_FTP_CREATE_MISSING_DIRS
FTP 响应超时。见CURLOPT_FTP_RESPONSE_TIMEOUT
CURLOPT_FTP_ALTERNATIVE_TO_USER
替代用户。见CURLOPT_FTP_ALTERNATIVE_TO_USER
忽略 PASV 响应中的 IP 地址。见CURLOPT_FTP_SKIP_PASV_IP
控制如何做 TLS。见CURLOPT_FTPSSLAUTH
身份验证后再次返回非 TLS。见CURLOPT_FTP_SSL_CCC
发送 ACCT 命令。见CURLOPT_FTP_ACCOUNT
指定如何访问文件。见CURLOPT_FTP_FILEMETHOD
Rtsp 选项
RTSP 请求。见CURLOPT_RTSP_REQUEST
RTSP 会话 ID。见CURLOPT_RTSP_SESSION_ID
RTSP 流 URI。见CURLOPT_RTSP_STREAM_URI
RTSP 传输:标头。见CURLOPT_RTSP_TRANSPORT
客户端 CSEQ 编号。见CURLOPT_RTSP_CLIENT_CSEQ
RTSP 服务器-> 客户端请求的 CSEQ 编号。见CURLOPT_RTSP_SERVER_CSEQ
AWS HTTP V4 签名。见CURLOPT_AWS_SIGV4
协议选项
使用文本传输。见CURLOPT_TRANSFERTEXT
通过代理为 URL 添加传输模式。见CURLOPT_PROXY_TRANSFER_MODE
转换换行符。见CURLOPT_CRLF
范围请求。见CURLOPT_RANGE
恢复传输。见CURLOPT_RESUME_FROM
恢复传输。见CURLOPT_RESUME_FROM_LARGE
设置 URL 以使用 CURLU *。见CURLOPT_CURLU
自定义请求/方法。见CURLOPT_CUSTOMREQUEST
请求文件修改日期和时间。见CURLOPT_FILETIME
仅列出。见CURLOPT_DIRLISTOLY
不要获取正文内容。见CURLOPT_NOBODY
要发送的文件大小。CURLOPT_INFILESIZE
要发送的文件大小。CURLOPT_INFILESIZE_LARGE
上传数据。见CURLOPT_UPLOAD
设置上传缓冲区大小。见CURLOPT_UPLOAD_BUFFERSIZE
发布/发送 MIME 数据。见CURLOPT_MIMEPOST
要获取的最大文件大小。见CURLOPT_MAXFILESIZE
要获取的最大文件大小。见CURLOPT_MAXFILESIZE_LARGE
提出时间条件请求。见CURLOPT_TIMECONDITION
时间条件请求的时间值。见CURLOPT_TIMEVALUE
时间条件请求的时间值。见CURLOPT_TIMEVALUE_LARGE
连接选项
整个请求超时。见CURLOPT_TIMEOUT
整个请求的毫秒超时。见CURLOPT_TIMEOUT_MS
中止传输的低速限制。见CURLOPT_LOW_SPEED_LIMIT
低于速度触发低速中止的时间。见CURLOPT_LOW_SPEED_TIME
将上传速度限制在此。见CURLOPT_MAX_SEND_SPEED_LARGE
将下载速度限制在此。见CURLOPT_MAX_RECV_SPEED_LARGE
连接池中的最大连接数。见CURLOPT_MAXCONNECTS
使用新的连接。CURLOPT_FRESH_CONNECT
防止后续连接重复使用它。见CURLOPT_FORBID_REUSE
限制连接的年龄(空闲时间)以供重用。见CURLOPT_MAXAGE_CONN
限制连接的时间(自创建以来)以供重用。见CURLOPT_MAXLIFETIME_CONN
连接阶段超时。见CURLOPT_CONNECTTIMEOUT
连接阶段的毫秒超时。见CURLOPT_CONNECTTIMEOUT_MS
要使用的 IP 版本。见CURLOPT_IPRESOLVE
只连接,没有别的。见CURLOPT_CONNECT_ONLY
使用 TLS/SSL。见CURLOPT_USE_SSL
提供固定/假名称解析。见CURLOPT_RESOLVE
绑定名称解析为此接口。见CURLOPT_DNS_INTERFACE
绑定名称解析为此 IP4 地址。见CURLOPT_DNS_LOCAL_IP4
绑定名称解析为此 IP6 地址。见CURLOPT_DNS_LOCAL_IP6
首选 DNS 服务器。见CURLOPT_DNS_SERVERS
使用前洗牌地址。见CURLOPT_DNS_SHUFFLE_ADDRESSES
等待服务器的连接被接受的超时时间。见CURLOPT_ACCEPTTIMEOUT_MS
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
快乐眼球超时。见CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
设置执行连接维护的时间间隔。见CURLOPT_UPKEEP_INTERVAL_MS
SSL 和安全选项
客户端证书。见CURLOPT_SSLCERT
客户端证书内存缓冲区。见CURLOPT_SSLCERT_BLOB
代理客户端证书。见CURLOPT_PROXY_SSLCERT
代理客户端证书内存缓冲区。见CURLOPT_PROXY_SSLCERT_BLOB
客户端证书类型。见CURLOPT_SSLCERTTYPE
代理客户端证书类型。见CURLOPT_PROXY_SSLCERTTYPE
客户端密钥。见CURLOPT_SSLKEY
客户端密钥内存缓冲区。见CURLOPT_SSLKEY_BLOB
代理客户端密钥。见CURLOPT_PROXY_SSLKEY
代理客户端密钥。见CURLOPT_PROXY_SSLKEY_BLOB
客户端密钥类型。见CURLOPT_SSLKEYTYPE
代理客户端密钥类型。见CURLOPT_PROXY_SSLKEYTYPE
客户端密钥密码。见CURLOPT_KEYPASSWD
代理客户端密钥密码。见CURLOPT_PROXY_KEYPASSWD
设置密钥交换曲线。见CURLOPT_SSL_EC_CURVES
启用 ALPN。见CURLOPT_SSL_ENABLE_ALPN
启用 NPN 的使用。见CURLOPT_SSL_ENABLE_NPN
将标识符与 SSL 引擎一起使用。见CURLOPT_SSLENGINE
默认 SSL 引擎。见CURLOPT_SSLENGINE_DEFAULT
启用 TLS 错误启动。见CURLOPT_SSL_FALSESTART
要使用的 SSL 版本。见CURLOPT_SSLVERSION
要使用的代理 SSL 版本。见CURLOPT_PROXY_SSLVERSION
验证 SSL 证书中的主机名。见CURLOPT_SSL_VERIFYHOST
验证 DoH (DNS-over-HTTPS) SSL 证书中的主机名。见CURLOPT_DOH_SSL_VERIFYHOST
验证代理 SSL 证书中的主机名。见CURLOPT_PROXY_SSL_VERIFYHOST
验证 SSL 证书。见CURLOPT_SSL_VERIFYPEER
验证 DoH (DNS-over-HTTPS) SSL 证书。见CURLOPT_DOH_SSL_VERIFYPEER
验证代理 SSL 证书。见CURLOPT_PROXY_SSL_VERIFYPEER
验证 SSL 证书的状态。见CURLOPT_SSL_VERIFYSTATUS
验证 DoH (DNS-over-HTTPS) SSL 证书的状态。见CURLOPT_DOH_SSL_VERIFYSTATUS
CA 证书包。见CURLOPT_CAINFO
CA 证书捆绑内存缓冲区。见CURLOPT_CAINFO_BLOB
代理 CA 证书包。见CURLOPT_PROXY_CAINFO
代理 CA 证书捆绑内存缓冲区。见CURLOPT_PROXY_CAINFO_BLOB
发行人证书。见CURLOPT_ISSUERCERT
颁发者证书内存缓冲区。见CURLOPT_ISSUERCERT_BLOB
代理颁发者证书。见CURLOPT_PROXY_ISSUERCERT
代理颁发者证书内存缓冲区。见CURLOPT_PROXY_ISSUERCERT_BLOB
CA 证书包的路径。见CURLOPT_CAPATH
代理 CA 证书包的路径。见CURLOPT_PROXY_CAPATH
证书吊销列表。见CURLOPT_CRLFILE
代理证书吊销列表。见CURLOPT_PROXY_CRLFILE
提取证书信息。见CURLOPT_CERTINFO
设置固定 SSL 公钥。见CURLOPT_PINNEDPUBLICKEY
设置代理的固定 SSL 公钥。见CURLOPT_PROXY_PINNEDPUBLICKEY
提供熵随机数据的来源。见CURLOPT_RANDOM_FILE
识别 EGD 套接字以获取熵。见CURLOPT_EGDSOCKET
要使用的密码。见CURLOPT_SSL_CIPHER_LIST
要使用的代理密码。见CURLOPT_PROXY_SSL_CIPHER_LIST
要使用的 TLS 1.3 密码套件。见CURLOPT_TLS13_CIPHERS
要使用的代理 TLS 1.3 密码套件。见CURLOPT_PROXY_TLS13_CIPHERS
禁用 SSL 会话 ID 缓存。见CURLOPT_SSL_SESSIONID_CACHE
控制 SSL 行为。见CURLOPT_SSL_OPTIONS
控制代理 SSL 行为。见CURLOPT_PROXY_SSL_OPTIONS
Kerberos 安全级别。见CURLOPT_KRBLEVEL
禁用 GSS-API 委派。见CURLOPT_GSSAPI_DELEGATION
SSH 选项
SSH 身份验证类型。见CURLOPT_SSH_AUTH_TYPES
启用 SSH 压缩。见CURLOPT_SSH_COMPRESSION
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
主机公钥的 MD5。见CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
主机公钥的 SHA256。见CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
公钥的文件名。见CURLOPT_SSH_PUBLIC_KEYFILE
私钥的文件名。见CURLOPT_SSH_PRIVATE_KEYFILE
已知主机的文件名。见CURLOPT_SSH_KNOWNHOSTS
已知主机处理的回调。见CURLOPT_SSH_KEYFUNCTION
传递给 ssh 密钥回调的自定义指针。见CURLOPT_SSH_KEYDATA
其他选项
要存储的私有指针。见CURLOPT_PRIVATE
共享对象使用。见CURLOPT_SHARE
用于创建新远程文件的模式。见CURLOPT_NEW_FILE_PERMS
创建新远程目录的模式。见CURLOPT_NEW_DIRECTORY_PERMS
远程登录选项
远程登录选项。见CURLOPT_TELNETOPTIONS
(6)其他比较少用的easy api,包括:
curl_version() | 返回指向 libcurl 版本字符串的指针 |
curl_getdate() | 将日期字符串转换为 time_t |
curl_mime_init() | ...和家庭,构建多部分表单数据帖子 |
curl_formadd() | (旧式)构建多部分表单数据帖子 |
curl_slist_append() | 建立一个链表 |
curl_slist_free_all() | 释放使用 curl_slist_append() 制作的整个 curl_slist |
curl_easy_escape() | URL 编码一个字符串 |
curl_easy_unescape() | URL 解码字符串 |
2.2 multi interface