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_EFFECTIVE_URL

CURLINFO_RESPONSE_CODE

最后收到的响应代码。CURLINFO_RESPONSE_CODE

CURLINFO_REFERER

引用标头。CURLINFO_REFERER

CURLINFO_HTTP_CONNECTCODE

最后一个代理 CONNECT 响应代码。CURLINFO_HTTP_CONNECTCODE

CURLINFO_HTTP_VERSION

连接中使用的 http 版本。CURLINFO_HTTP_VERSION

CURLINFO_FILETIME

检索文档的远程时间。CURLINFO_FILETIME

CURLINFO_FILETIME_T

检索文档的远程时间。CURLINFO_FILETIME_T

CURLINFO_TOTAL_TIME

上次传输的总时间。CURLINFO_TOTAL_TIME

CURLINFO_TOTAL_TIME_T

上次传输的总时间。CURLINFO_TOTAL_TIME_T

CURLINFO_NAMELOOKUP_TIME

从开始到名称解析完成的时间。CURLINFO_NAMELOOKUP_TIME

CURLINFO_NAMELOOKUP_TIME_T

从开始到名称解析完成的时间。CURLINFO_NAMELOOKUP_TIME_T

CURLINFO_CONNECT_TIME

从开始到远程主机或代理完成的时间。CURLINFO_CONNECT_TIME

CURLINFO_CONNECT_TIME_T

从开始到远程主机或代理完成的时间。CURLINFO_CONNECT_TIME_T

CURLINFO_APPCONNECT_TIME

从开始到 SSL/SSH 握手完成的时间。CURLINFO_APPCONNECT_TIME

CURLINFO_APPCONNECT_TIME_T

从开始到 SSL/SSH 握手完成的时间。CURLINFO_APPCONNECT_TIME_T

CURLINFO_PRETRANSFER_TIME

从开始到传输开始之前的时间。CURLINFO_PRETRANSFER_TIME

CURLINFO_PRETRANSFER_TIME_T

从开始到传输开始之前的时间。CURLINFO_PRETRANSFER_TIME_T

CURLINFO_STARTTRANSFER_TIME

从开始到收到第一个字节的时间。CURLINFO_STARTTRANSFER_TIME

CURLINFO_STARTTRANSFER_TIME_T

从开始到收到第一个字节的时间。CURLINFO_STARTTRANSFER_TIME_T

CURLINFO_REDIRECT_TIME

最终传输之前所​​有重定向步骤所用的时间。CURLINFO_REDIRECT_TIME

CURLINFO_REDIRECT_TIME_T

最终传输之前所​​有重定向步骤所用的时间。CURLINFO_REDIRECT_TIME_T

CURLINFO_REDIRECT_COUNT

遵循的重定向总数。CURLINFO_REDIRECT_COUNT

CURLINFO_REDIRECT_URL

如果您启用了重定向,重定向会将您带到的 URL。CURLINFO_REDIRECT_URL

CURLINFO_SIZE_UPLOAD

(已弃用)上传的字节数。CURLINFO_SIZE_UPLOAD

CURLINFO_SIZE_UPLOAD_T

上传的字节数。CURLINFO_SIZE_UPLOAD_T

CURLINFO_SIZE_DOWNLOAD

(已弃用)下载的字节数。CURLINFO_SIZE_DOWNLOAD

CURLINFO_SIZE_DOWNLOAD_T

下载的字节数。CURLINFO_SIZE_DOWNLOAD_T

CURLINFO_SPEED_DOWNLOAD

(已弃用)平均下载速度。CURLINFO_SPEED_DOWNLOAD

CURLINFO_SPEED_DOWNLOAD_T

平均下载速度。CURLINFO_SPEED_DOWNLOAD_T

CURLINFO_SPEED_UPLOAD

(已弃用)平均上传速度。CURLINFO_SPEED_UPLOAD

CURLINFO_SPEED_UPLOAD_T

平均上传速度。CURLINFO_SPEED_UPLOAD_T

CURLINFO_HEADER_SIZE

收到的所有标头的字节数。CURLINFO_HEADER_SIZE

CURLINFO_REQUEST_SIZE

发出的 HTTP 请求中发送的字节数。CURLINFO_REQUEST_SIZE

CURLINFO_SSL_VERIFYRESULT

证书验证结果。CURLINFO_SSL_VERIFYRESULT

CURLINFO_PROXY_ERROR

详细的代理错误。CURLINFO_PROXY_ERROR

CURLINFO_PROXY_SSL_VERIFYRESULT

代理证书验证结果。CURLINFO_PROXY_SSL_VERIFYRESULT

CURLINFO_SSL_ENGINES

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

CURLINFO_CONTENT_TYPE

来自 Content-Type 标头的内容类型。CURLINFO_CONTENT_TYPE

CURLINFO_RETRY_AFTER

来自 Retry-After 标头的值。CURLINFO_RETRY_AFTER

CURLINFO_PRIVATE

用户的私有数据指针。CURLINFO_PRIVATE

CURLINFO_HTTPAUTH_AVAIL

可用的 HTTP 身份验证方法。CURLINFO_HTTPAUTH_AVAIL

CURLINFO_PROXYAUTH_AVAIL

可用的 HTTP 代理身份验证方法。CURLINFO_PROXYAUTH_AVAIL

CURLINFO_OS_ERRNO

上次连接失败的 errno。CURLINFO_OS_ERRNO

CURLINFO_NUM_CONNECTS

用于先前传输的新成功连接数。CURLINFO_NUM_CONNECTS

CURLINFO_PRIMARY_IP

上次连接的 IP 地址。CURLINFO_PRIMARY_IP

CURLINFO_PRIMARY_PORT

上次连接的端口。CURLINFO_PRIMARY_PORT

CURLINFO_LOCAL_IP

上次连接的本端IP地址。CURLINFO_LOCAL_IP

CURLINFO_LOCAL_PORT

上次连接的本端端口。CURLINFO_LOCAL_PORT

CURLINFO_COOKIELIST

所有已知 cookie 的列表。CURLINFO_COOKIELIST

CURLINFO_LASTSOCKET

最后使用的套接字。CURLINFO_LASTSOCKET

CURLINFO_ACTIVESOCKET

会话的活动套接字。CURLINFO_ACTIVESOCKET

CURLINFO_FTP_ENTRY_PATH

登录FTP服务器后的入口路径。CURLINFO_FTP_ENTRY_PATH

CURLINFO_CERTINFO

证书链。CURLINFO_CERTINFO

CURLINFO_TLS_SSL_PTR

可用于进一步处理的 TLS 会话信息。CURLINFO_TLS_SSL_PTR

CURLINFO_TLS_SESSION

可用于进一步处理的 TLS 会话信息。请参阅CURLINFO_TLS_SESSION已弃用的选项,请改用CURLINFO_TLS_SSL_PTR

CURLINFO_CONDITION_UNMET

是否满足时间条件或 304 HTTP 响应。CURLINFO_CONDITION_UNMET

CURLINFO_RTSP_SESSION_ID

RTSP 会话 ID。CURLINFO_RTSP_SESSION_ID

CURLINFO_RTSP_CLIENT_CSEQ

接下来将使用的 RTSP CSeq。CURLINFO_RTSP_CLIENT_CSEQ

CURLINFO_RTSP_SERVER_CSEQ

接下来预计的 RTSP CSeq。CURLINFO_RTSP_SERVER_CSEQ

CURLINFO_RTSP_CSEQ_RECV

上次接收到的 RTSP CSeq。CURLINFO_RTSP_CSEQ_RECV

CURLINFO_PROTOCOL

用于连接的协议。(在 7.52.0 中添加)参见CURLINFO_PROTOCOL

CURLINFO_SCHEME

用于连接的方案。(在 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_HEADER

CURLOPT_NOPROGRESS

关闭进度表。CURLOPT_NOPROGRESS

CURLOPT_NOSIGNAL

不要安装信号处理程序。CURLOPT_NOSIGNAL

CURLOPT_WILDCARDMATCH

根据文件名模式传输多个文件。CURLOPT_WILDCARDMATCH

  回调选项

 

CURLOPT_WRITEFUNCTION

写入数据的回调。CURLOPT_WRITEFUNCTION

CURLOPT_WRITEDATA

传递给写回调的数据指针。CURLOPT_WRITEDATA

CURLOPT_READFUNCTION

读取数据的回调。CURLOPT_READFUNCTION

CURLOPT_READDATA

传递给读取回调的数据指针。CURLOPT_READDATA

CURLOPT_IOCTLFUNCTION

I/O 操作的回调。CURLOPT_IOCTLFUNCTION

CURLOPT_IOCTLDATA

传递给 I/O 回调的数据指针。CURLOPT_IOCTLDATA

CURLOPT_SEEKFUNCTION

寻道操作的回调。CURLOPT_SEEKFUNCTION

CURLOPT_SEEKDATA

传递给搜索回调的数据指针。CURLOPT_SEEKDATA

CURLOPT_SOCKOPTFUNCTION

sockopt 操作的回调。CURLOPT_SOCKOPTFUNCTION

CURLOPT_SOCKOPTDATA

传递给 sockopt 回调的数据指针。CURLOPT_SOCKOPTDATA

CURLOPT_OPENSOCKETFUNCTION

创建套接字的回调。CURLOPT_OPENSOCKETFUNCTION

CURLOPT_OPENSOCKETDATA

传递给打开套接字回调的数据指针。CURLOPT_OPENSOCKETDATA

CURLOPT_CLOSESOCKETFUNCTION

关闭套接字的回调。CURLOPT_CLOSESOCKETFUNCTION

CURLOPT_CLOSESOCKETDATA

传递给关闭套接字回调的数据指针。CURLOPT_CLOSESOCKETDATA

CURLOPT_PROGRESSFUNCTION

进度表的过时回调。CURLOPT_PROGRESSFUNCTION

CURLOPT_PROGRESSDATA

传递给进度表回调的数据指针。CURLOPT_PROGRESSDATA

CURLOPT_XFERINFOFUNCTION

进度表的回调。CURLOPT_XFERINFOFUNCTION

CURLOPT_XFERINFODATA

传递给进度表回调的数据指针。CURLOPT_XFERINFODATA

CURLOPT_HEADERFUNCTION

用于写入接收到的标头的回调。CURLOPT_HEADERFUNCTION

CURLOPT_HEADERDATA

传递给标头回调的数据指针。CURLOPT_HEADERDATA

CURLOPT_DEBUGFUNCTION

调试信息的回调。CURLOPT_DEBUGFUNCTION

CURLOPT_DEBUGDATA

传递给调试回调的数据指针。CURLOPT_DEBUGDATA

CURLOPT_SSL_CTX_FUNCTION

SSL 上下文逻辑的回调。CURLOPT_SSL_CTX_FUNCTION

CURLOPT_SSL_CTX_DATA

传递给 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

CURLOPT_INTERLEAVEFUNCTION

RTSP 交错数据的回调。CURLOPT_INTERLEAVEFUNCTION

CURLOPT_INTERLEAVEDATA

传递给 RTSP 交错回调的数据指针。CURLOPT_INTERLEAVEDATA

CURLOPT_CHUNK_BGN_FUNCTION

块的通配符下载开始的回调。CURLOPT_CHUNK_BGN_FUNCTION

CURLOPT_CHUNK_END_FUNCTION

块的通配符下载结束的回调。CURLOPT_CHUNK_END_FUNCTION

CURLOPT_CHUNK_DATA

传递给块回调的数据指针。CURLOPT_CHUNK_DATA

CURLOPT_FNMATCH_FUNCTION

通配符匹配回调。CURLOPT_FNMATCH_FUNCTION

CURLOPT_FNMATCH_DATA

传递给通配符匹配回调的数据指针。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_RESOLVER_START_DATA

CURLOPT_PREREQFUNCTION

在建立连接之后但在对该连接发出请求之前调用的回调。CURLOPT_PREREQFUNCTION

CURLOPT_PREREQDATA

传递给 CURLOPT_PREREQFUNCTION 回调的数据指针。CURLOPT_PREREQDATA

  错误选项

 

CURLOPT_ERRORBUFFER

错误消息缓冲区。CURLOPT_ERRORBUFFER

CURLOPT_STDERR

stderr 替换流。CURLOPT_STDERR

CURLOPT_FAILONERROR

因 HTTP 4xx 错误而失败。CURLOPT_FAILONERROR

CURLOPT_KEEP_SENDING_ON_ERROR

继续发送 HTTP >= 300 错误。CURLOPT_KEEP_SENDING_ON_ERROR

  网络选项

 

CURLOPT_URL

要处理的 URL。CURLOPT_URL

CURLOPT_PATH_AS_IS

禁用压缩路径中的 /../ 和 /./ 序列。CURLOPT_PATH_AS_IS

CURLOPT_PROTOCOLS

允许的协议。CURLOPT_PROTOCOLS

CURLOPT_REDIR_PROTOCOLS

允许重定向到的协议。CURLOPT_REDIR_PROTOCOLS

CURLOPT_DEFAULT_PROTOCOL

默认协议。CURLOPT_DEFAULT_PROTOCOL

CURLOPT_PROXY

要使用的代理。CURLOPT_PROXY

CURLOPT_PRE_PROXY

要使用的袜子代理。CURLOPT_PRE_PROXY

CURLOPT_PROXYPORT

要使用的代理端口。CURLOPT_PROXYPORT

CURLOPT_PROXYTYPE

代理类型。CURLOPT_PROXYTYPE

CURLOPT_NOPROXY

从代理使用中过滤掉主机。CURLOPT_NOPROXY

CURLOPT_HTTPPROXYTUNNEL

通过 HTTP 代理隧道。CURLOPT_HTTPPROXYTUNNEL

CURLOPT_CONNECT_TO

连接到特定的主机和端口。CURLOPT_CONNECT_TO

CURLOPT_SOCKS5_AUTH

Socks5 认证方法。CURLOPT_SOCKS5_AUTH

CURLOPT_SOCKS5_GSSAPI_SERVICE

Socks5 GSSAPI 服务名称。CURLOPT_SOCKS5_GSSAPI_SERVICE

CURLOPT_SOCKS5_GSSAPI_NEC

Socks5 GSSAPI NEC 模式。CURLOPT_SOCKS5_GSSAPI_NEC

CURLOPT_PROXY_SERVICE_NAME

代理身份验证服务名称。CURLOPT_PROXY_SERVICE_NAME

CURLOPT_HAPROXYPROTOCOL

发送 HAProxy PROXY 协议 v1 标头。CURLOPT_HAPROXYPROTOCOL

CURLOPT_SERVICE_NAME

身份验证服务名称。CURLOPT_SERVICE_NAME

CURLOPT_INTERFACE

将本地连接绑定到此。CURLOPT_INTERFACE

CURLOPT_LOCALPORT

将本地连接绑定到此端口。CURLOPT_LOCALPORT

CURLOPT_LOCALPORTRANGE

将本地连接绑定到端口范围。CURLOPT_LOCALPORTRANGE

CURLOPT_DNS_CACHE_TIMEOUT

DNS 缓存超时。CURLOPT_DNS_CACHE_TIMEOUT

CURLOPT_DNS_USE_GLOBAL_CACHE

OBSOLETE 启用全局 DNS 缓存。CURLOPT_DNS_USE_GLOBAL_CACHE

CURLOPT_DOH_URL

使用此 DoH 服务器进行名称解析。CURLOPT_DOH_URL

CURLOPT_BUFFERSIZE

询问备用缓冲区大小。CURLOPT_BUFFERSIZE

CURLOPT_PORT

要连接的端口号。CURLOPT_PORT

CURLOPT_TCP_FASTOPEN

启用 TFO、TCP 快速打开。CURLOPT_TCP_FASTOPEN

CURLOPT_TCP_NODELAY

禁用 Nagle 算法。CURLOPT_TCP_NODELAY

CURLOPT_ADDRESS_SCOPE

本地地址的 IPv6 范围。CURLOPT_ADDRESS_SCOPE

CURLOPT_TCP_KEEPALIVE

启用 TCP 保持活动。CURLOPT_TCP_KEEPALIVE

CURLOPT_TCP_KEEPIDLE

发送保持连接之前的空闲时间。CURLOPT_TCP_KEEPIDLE

CURLOPT_TCP_KEEPINTVL

保持活动探测之间的间隔。CURLOPT_TCP_KEEPINTVL

CURLOPT_UNIX_SOCKET_PATH

Unix 域套接字的路径。CURLOPT_UNIX_SOCKET_PATH

CURLOPT_ABSTRACT_UNIX_SOCKET

抽象 Unix 域套接字的路径。CURLOPT_ABSTRACT_UNIX_SOCKET

  名称和密码选项(身份验证)

 

CURLOPT_NETRC

启用 .netrc 解析。CURLOPT_NETRC

CURLOPT_NETRC_FILE

.netrc 文件名。CURLOPT_NETRC_FILE

CURLOPT_USERPWD

用户名和密码。CURLOPT_USERPWD

CURLOPT_PROXYUSERPWD

代理用户名和密码。CURLOPT_PROXYUSERPWD

CURLOPT_USERNAME

用户名。CURLOPT_USERNAME

CURLOPT_PASSWORD

密码。CURLOPT_PASSWORD

CURLOPT_LOGIN_OPTIONS

登录选项。CURLOPT_LOGIN_OPTIONS

CURLOPT_PROXYUSERNAME

代理用户名。CURLOPT_PROXYUSERNAME

CURLOPT_PROXYPASSWORD

代理密码。CURLOPT_PROXYPASSWORD

CURLOPT_HTTPAUTH

HTTP 服务器身份验证方法。CURLOPT_HTTPAUTH

CURLOPT_TLSAUTH_USERNAME

TLS 认证用户名。CURLOPT_TLSAUTH_USERNAME

CURLOPT_PROXY_TLSAUTH_USERNAME

代理 TLS 身份验证用户名。CURLOPT_PROXY_TLSAUTH_USERNAME

CURLOPT_TLSAUTH_PASSWORD

TLS 认证密码。CURLOPT_TLSAUTH_PASSWORD

CURLOPT_PROXY_TLSAUTH_PASSWORD

代理 TLS 身份验证密码。CURLOPT_PROXY_TLSAUTH_PASSWORD

CURLOPT_TLSAUTH_TYPE

TLS 身份验证方法。CURLOPT_TLSAUTH_TYPE

CURLOPT_PROXY_TLSAUTH_TYPE

代理 TLS 身份验证方法。CURLOPT_PROXY_TLSAUTH_TYPE

CURLOPT_PROXYAUTH

HTTP 代理身份验证方法。CURLOPT_PROXYAUTH

CURLOPT_SASL_AUTHZID

SASL 授权身份(要充当的身份)。CURLOPT_SASL_AUTHZID

CURLOPT_SASL_IR

启用 SASL 初始响应。CURLOPT_SASL_IR

CURLOPT_XOAUTH2_BEARER

OAuth2 不记名令牌。CURLOPT_XOAUTH2_BEARER

CURLOPT_DISALLOW_USERNAME_IN_URL

不允许在 URL 中使用用户名。CURLOPT_DISALLOW_USERNAME_IN_URL

  Http 选项

 

CURLOPT_AUTOREFERER

自动设置 Referer: 标头。CURLOPT_AUTOREFERER

CURLOPT_ACCEPT_ENCODING

接受编码和自动解压缩数据。CURLOPT_ACCEPT_ENCODING

CURLOPT_TRANSFER_ENCODING

请求传输编码。CURLOPT_TRANSFER_ENCODING

CURLOPT_FOLLOWLOCATION

遵循 HTTP 重定向。CURLOPT_FOLLOWLOCATION

CURLOPT_UNRESTRICTED_AUTH

不要将身份验证限制为原始主机。CURLOPT_UNRESTRICTED_AUTH

CURLOPT_MAXREDIRS

要遵循的最大重定向数。CURLOPT_MAXREDIRS

CURLOPT_POSTREDIR

POST 后如何处理重定向。CURLOPT_POSTREDIR

CURLOPT_PUT

发出 HTTP PUT 请求。CURLOPT_PUT

CURLOPT_POST

发出 HTTP POST 请求。CURLOPT_POST

CURLOPT_POSTFIELDS

使用此数据发送 POST。CURLOPT_POSTFIELDS

CURLOPT_POSTFIELDSIZE

POST 数据有这么大。CURLOPT_POSTFIELDSIZE

CURLOPT_POSTFIELDSIZE_LARGE

POST 数据有这么大。CURLOPT_POSTFIELDSIZE_LARGE

CURLOPT_COPYPOSTFIELDS

使用此数据发送 POST - 并复制它。CURLOPT_COPYPOSTFIELDS

CURLOPT_HTTPPOST

多部分 formpost HTTP POST。CURLOPT_HTTPPOST

CURLOPT_REFERER

参考:标题。CURLOPT_REFERER

CURLOPT_USERAGENT

用户代理:标题。CURLOPT_USERAGENT

CURLOPT_HTTPHEADER

自定义 HTTP 标头。CURLOPT_HTTPHEADER

CURLOPT_HEADEROPT

控制自定义标题。CURLOPT_HEADEROPT

CURLOPT_PROXYHEADER

发送到代理的自定义 HTTP 标头。CURLOPT_PROXYHEADER

CURLOPT_HTTP200ALIASES

200 OK 的替代版本。CURLOPT_HTTP200ALIASES

CURLOPT_COOKIE

要发送的 Cookie。CURLOPT_COOKIE

CURLOPT_COOKIEFILE

从中读取 cookie 的文件。CURLOPT_COOKIEFILE

CURLOPT_COOKIEJAR

要将 cookie 写入的文件。CURLOPT_COOKIEJAR

CURLOPT_COOKIESESSION

开始一个新的 cookie 会话。CURLOPT_COOKIESESSION

CURLOPT_COOKIELIST

添加或控制 cookie。CURLOPT_COOKIELIST

CURLOPT_ALTSVC

指定 Alt-Svc: 缓存文件名。CURLOPT_ALTSVC

CURLOPT_ALTSVC_CTRL

启用并配置 Alt-Svc: 处理。CURLOPT_ALTSVC_CTRL

CURLOPT_HSTS

设置 HSTS 缓存文件。CURLOPT_HSTS

CURLOPT_HSTS_CTRL

启用 HSTS。CURLOPT_HSTS_CTRL

CURLOPT_HSTSREADFUNCTION

设置 HSTS 读取回调。CURLOPT_HSTSREADFUNCTION

CURLOPT_HSTSREADDATA

传递指向 HSTS 读取回调的指针。CURLOPT_HSTSREADDATA

CURLOPT_HSTSWRITEFUNCTION

设置 HSTS 写回调。CURLOPT_HSTSWRITEFUNCTION

CURLOPT_HSTSWRITEDATA

传递指向 HSTS 写入回调的指针。CURLOPT_HSTSWRITEDATA

CURLOPT_HTTPGET

执行 HTTP GET 请求。CURLOPT_HTTPGET

CURLOPT_REQUEST_TARGET

设置请求目标。CURLOPT_REQUEST_TARGET

CURLOPT_HTTP_VERSION

要使用的 HTTP 版本。CURLOPT_HTTP_VERSION

CURLOPT_HTTP09_ALLOWED

允许 HTTP/0.9 响应。CURLOPT_HTTP09_ALLOWED

CURLOPT_IGNORE_CONTENT_LENGTH

忽略内容长度。CURLOPT_IGNORE_CONTENT_LENGTH

CURLOPT_HTTP_CONTENT_DECODING

禁用内容解码。CURLOPT_HTTP_CONTENT_DECODING

CURLOPT_HTTP_TRANSFER_DECODING

禁用传输解码。CURLOPT_HTTP_TRANSFER_DECODING

CURLOPT_EXPECT_100_TIMEOUT_MS

100-继续超时。CURLOPT_EXPECT_100_TIMEOUT_MS

CURLOPT_TRAILERFUNCTION

设置用于发送尾随标头的回调。CURLOPT_TRAILERFUNCTION

CURLOPT_TRAILERDATA

传递给尾随标头回调的自定义指针。CURLOPT_TRAILERDATA

CURLOPT_PIPEWAIT

等待连接到管道上。CURLOPT_PIPEWAIT

CURLOPT_STREAM_DEPENDS

这个 HTTP/2 流依赖于另一个。CURLOPT_STREAM_DEPENDS

CURLOPT_STREAM_DEPENDS_E

这个 HTTP/2 流完全依赖于另一个。CURLOPT_STREAM_DEPENDS_E

CURLOPT_STREAM_WEIGHT

设置此 HTTP/2 流的权重。CURLOPT_STREAM_WEIGHT

SMTP 选项

 

CURLOPT_MAIL_FROM

发件人地址。CURLOPT_MAIL_FROM

CURLOPT_MAIL_RCPT

收件人地址。CURLOPT_MAIL_RCPT

CURLOPT_MAIL_AUTH

认证地址。CURLOPT_MAIL_AUTH

CURLOPT_MAIL_RCPT_ALLLOWFAILS

允许 RCPT TO 命令对某些收件人失败。CURLOPT_MAIL_RCPT_ALLLOWFAILS

  Tftp 选项

 

CURLOPT_TFTP_BLKSIZE

TFTP 块大小。CURLOPT_TFTP_BLKSIZE

CURLOPT_TFTP_NO_OPTIONS

不要发送 TFTP 选项请求。CURLOPT_TFTP_NO_OPTIONS

  FTP选项

 

CURLOPT_FTPPORT

使用主动 FTP。CURLOPT_FTPPORT

CURLOPT_QUOTE

传输前要运行的命令。CURLOPT_QUOTE

CURLOPT_POSTQUOTE

传输后运行的命令。CURLOPT_POSTQUOTE

CURLOPT_PREQUOTE

在传输之前运行的命令。CURLOPT_PREQUOTE

CURLOPT_APPEND

附加到远程文件。CURLOPT_APPEND

CURLOPT_FTP_USE_EPRT

使用 EPTR。CURLOPT_FTP_USE_EPRT

CURLOPT_FTP_USE_EPSV

使用 EPSV。CURLOPT_FTP_USE_EPSV

CURLOPT_FTP_USE_PRET

使用 PRET。CURLOPT_FTP_USE_PRET

CURLOPT_FTP_CREATE_MISSING_DIRS

在远程服务器上创建丢失的目录。CURLOPT_FTP_CREATE_MISSING_DIRS

CURLOPT_FTP_RESPONSE_TIMEOUT

FTP 响应超时。CURLOPT_FTP_RESPONSE_TIMEOUT

CURLOPT_FTP_ALTERNATIVE_TO_USER

替代用户。CURLOPT_FTP_ALTERNATIVE_TO_USER

CURLOPT_FTP_SKIP_PASV_IP

忽略 PASV 响应中的 IP 地址。CURLOPT_FTP_SKIP_PASV_IP

CURLOPT_FTPSSLAUTH

控制如何做 TLS。CURLOPT_FTPSSLAUTH

CURLOPT_FTP_SSL_CCC

身份验证后再次返回非 TLS。CURLOPT_FTP_SSL_CCC

CURLOPT_FTP_ACCOUNT

发送 ACCT 命令。CURLOPT_FTP_ACCOUNT

CURLOPT_FTP_FILEMETHOD

指定如何访问文件。CURLOPT_FTP_FILEMETHOD

  Rtsp 选项

 

CURLOPT_RTSP_REQUEST

RTSP 请求。CURLOPT_RTSP_REQUEST

CURLOPT_RTSP_SESSION_ID

RTSP 会话 ID。CURLOPT_RTSP_SESSION_ID

CURLOPT_RTSP_STREAM_URI

RTSP 流 URI。CURLOPT_RTSP_STREAM_URI

CURLOPT_RTSP_TRANSPORT

RTSP 传输:标头。CURLOPT_RTSP_TRANSPORT

CURLOPT_RTSP_CLIENT_CSEQ

客户端 CSEQ 编号。CURLOPT_RTSP_CLIENT_CSEQ

CURLOPT_RTSP_SERVER_CSEQ

RTSP 服务器-> 客户端请求的 CSEQ 编号。CURLOPT_RTSP_SERVER_CSEQ

CURLOPT_AWS_SIGV4

AWS HTTP V4 签名。CURLOPT_AWS_SIGV4

  协议选项

 

CURLOPT_TRANSFERTEXT

使用文本传输。CURLOPT_TRANSFERTEXT

CURLOPT_PROXY_TRANSFER_MODE

通过代理为 URL 添加传输模式。CURLOPT_PROXY_TRANSFER_MODE

CURLOPT_CRLF

转换换行符。CURLOPT_CRLF

CURLOPT_RANGE

范围请求。CURLOPT_RANGE

CURLOPT_RESUME_FROM

恢复传输。CURLOPT_RESUME_FROM

CURLOPT_RESUME_FROM_LARGE

恢复传输。CURLOPT_RESUME_FROM_LARGE

CURLOPT_CURLU

设置 URL 以使用 CURLU *。CURLOPT_CURLU

CURLOPT_CUSTOMREQUEST

自定义请求/方法。CURLOPT_CUSTOMREQUEST

CURLOPT_FILETIME

请求文件修改日期和时间。CURLOPT_FILETIME

CURLOPT_DIRLISTONLY

仅列出。CURLOPT_DIRLISTOLY

CURLOPT_NOBODY

不要获取正文内容。CURLOPT_NOBODY

CURLOPT_INFILESIZE

要发送的文件大小。CURLOPT_INFILESIZE

CURLOPT_INFILESIZE_LARGE

要发送的文件大小。CURLOPT_INFILESIZE_LARGE

CURLOPT_UPLOAD

上传数据。CURLOPT_UPLOAD

CURLOPT_UPLOAD_BUFFERSIZE

设置上传缓冲区大小。CURLOPT_UPLOAD_BUFFERSIZE

CURLOPT_MIMEPOST

发布/发送 MIME 数据。CURLOPT_MIMEPOST

CURLOPT_MAXFILESIZE

要获取的最大文件大小。CURLOPT_MAXFILESIZE

CURLOPT_MAXFILESIZE_LARGE

要获取的最大文件大小。CURLOPT_MAXFILESIZE_LARGE

CURLOPT_TIMECONDITION

提出时间条件请求。CURLOPT_TIMECONDITION

CURLOPT_TIMEVALUE

时间条件请求的时间值。CURLOPT_TIMEVALUE

CURLOPT_TIMEVALUE_LARGE

时间条件请求的时间值。CURLOPT_TIMEVALUE_LARGE

  连接选项

 

CURLOPT_TIMEOUT

整个请求超时。CURLOPT_TIMEOUT

CURLOPT_TIMEOUT_MS

整个请求的毫秒超时。CURLOPT_TIMEOUT_MS

CURLOPT_LOW_SPEED_LIMIT

中止传输的低速限制。CURLOPT_LOW_SPEED_LIMIT

CURLOPT_LOW_SPEED_TIME

低于速度触发低速中止的时间。CURLOPT_LOW_SPEED_TIME

CURLOPT_MAX_SEND_SPEED_LARGE

将上传速度限制在此。CURLOPT_MAX_SEND_SPEED_LARGE

CURLOPT_MAX_RECV_SPEED_LARGE

将下载速度限制在此。CURLOPT_MAX_RECV_SPEED_LARGE

CURLOPT_MAXCONNECTS

连接池中的最大连接数。CURLOPT_MAXCONNECTS

CURLOPT_FRESH_CONNECT

使用新的连接。CURLOPT_FRESH_CONNECT

CURLOPT_FORBID_REUSE

防止后续连接重复使用它。CURLOPT_FORBID_REUSE

CURLOPT_MAXAGE_CONN

限制连接的年龄(空闲时间)以供重用。CURLOPT_MAXAGE_CONN

CURLOPT_MAXLIFETIME_CONN

限制连接的时间(自创建以来)以供重用。CURLOPT_MAXLIFETIME_CONN

CURLOPT_CONNECTTIMEOUT

连接阶段超时。CURLOPT_CONNECTTIMEOUT

CURLOPT_CONNECTTIMEOUT_MS

连接阶段的毫秒超时。CURLOPT_CONNECTTIMEOUT_MS

CURLOPT_IPRESOLVE

要使用的 IP 版本。CURLOPT_IPRESOLVE

CURLOPT_CONNECT_ONLY

只连接,没有别的。CURLOPT_CONNECT_ONLY

CURLOPT_USE_SSL

使用 TLS/SSL。CURLOPT_USE_SSL

CURLOPT_RESOLVE

提供固定/假名称解析。CURLOPT_RESOLVE

CURLOPT_DNS_INTERFACE

绑定名称解析为此接口。CURLOPT_DNS_INTERFACE

CURLOPT_DNS_LOCAL_IP4

绑定名称解析为此 IP4 地址。CURLOPT_DNS_LOCAL_IP4

CURLOPT_DNS_LOCAL_IP6

绑定名称解析为此 IP6 地址。CURLOPT_DNS_LOCAL_IP6

CURLOPT_DNS_SERVERS

首选 DNS 服务器。CURLOPT_DNS_SERVERS

CURLOPT_DNS_SHUFFLE_ADDRESSES

使用前洗牌地址。CURLOPT_DNS_SHUFFLE_ADDRESSES

CURLOPT_ACCEPTTIMEOUT_MS

等待服务器的连接被接受的超时时间。CURLOPT_ACCEPTTIMEOUT_MS

CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS

快乐眼球超时。CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS

CURLOPT_UPKEEP_INTERVAL_MS

设置执行连接维护的时间间隔。CURLOPT_UPKEEP_INTERVAL_MS

  SSL 和安全选项

 

CURLOPT_SSLCERT

客户端证书。CURLOPT_SSLCERT

CURLOPT_SSLCERT_BLOB

客户端证书内存缓冲区。CURLOPT_SSLCERT_BLOB

CURLOPT_PROXY_SSLCERT

代理客户端证书。CURLOPT_PROXY_SSLCERT

CURLOPT_PROXY_SSLCERT_BLOB

代理客户端证书内存缓冲区。CURLOPT_PROXY_SSLCERT_BLOB

CURLOPT_SSLCERTTYPE

客户端证书类型。CURLOPT_SSLCERTTYPE

CURLOPT_PROXY_SSLCERTTYPE

代理客户端证书类型。CURLOPT_PROXY_SSLCERTTYPE

CURLOPT_SSLKEY

客户端密钥。CURLOPT_SSLKEY

CURLOPT_SSLKEY_BLOB

客户端密钥内存缓冲区。CURLOPT_SSLKEY_BLOB

CURLOPT_PROXY_SSLKEY

代理客户端密钥。CURLOPT_PROXY_SSLKEY

CURLOPT_PROXY_SSLKEY_BLOB

代理客户端密钥。CURLOPT_PROXY_SSLKEY_BLOB

CURLOPT_SSLKEYTYPE

客户端密钥类型。CURLOPT_SSLKEYTYPE

CURLOPT_PROXY_SSLKEYTYPE

代理客户端密钥类型。CURLOPT_PROXY_SSLKEYTYPE

CURLOPT_KEYPASSWD

客户端密钥密码。CURLOPT_KEYPASSWD

CURLOPT_PROXY_KEYPASSWD

代理客户端密钥密码。CURLOPT_PROXY_KEYPASSWD

CURLOPT_SSL_EC_CURVES

设置密钥交换曲线。CURLOPT_SSL_EC_CURVES

CURLOPT_SSL_ENABLE_ALPN

启用 ALPN。CURLOPT_SSL_ENABLE_ALPN

CURLOPT_SSL_ENABLE_NPN

启用 NPN 的使用。CURLOPT_SSL_ENABLE_NPN

CURLOPT_SSLENGINE

将标识符与 SSL 引擎一起使用。CURLOPT_SSLENGINE

CURLOPT_SSLENGINE_DEFAULT

默认 SSL 引擎。CURLOPT_SSLENGINE_DEFAULT

CURLOPT_SSL_FALSESTART

启用 TLS 错误启动。CURLOPT_SSL_FALSESTART

CURLOPT_SSLVERSION

要使用的 SSL 版本。CURLOPT_SSLVERSION

CURLOPT_PROXY_SSLVERSION

要使用的代理 SSL 版本。CURLOPT_PROXY_SSLVERSION

CURLOPT_SSL_VERIFYHOST

验证 SSL 证书中的主机名。CURLOPT_SSL_VERIFYHOST

CURLOPT_DOH_SSL_VERIFYHOST

验证 DoH (DNS-over-HTTPS) SSL 证书中的主机名。CURLOPT_DOH_SSL_VERIFYHOST

CURLOPT_PROXY_SSL_VERIFYHOST

验证代理 SSL 证书中的主机名。CURLOPT_PROXY_SSL_VERIFYHOST

CURLOPT_SSL_VERIFYPEER

验证 SSL 证书。CURLOPT_SSL_VERIFYPEER

CURLOPT_DOH_SSL_VERIFYPEER

验证 DoH (DNS-over-HTTPS) SSL 证书。CURLOPT_DOH_SSL_VERIFYPEER

CURLOPT_PROXY_SSL_VERIFYPEER

验证代理 SSL 证书。CURLOPT_PROXY_SSL_VERIFYPEER

CURLOPT_SSL_VERIFYSTATUS

验证 SSL 证书的状态。CURLOPT_SSL_VERIFYSTATUS

CURLOPT_DOH_SSL_VERIFYSTATUS

验证 DoH (DNS-over-HTTPS) SSL 证书的状态。CURLOPT_DOH_SSL_VERIFYSTATUS

CURLOPT_CAINFO

CA 证书包。CURLOPT_CAINFO

CURLOPT_CAINFO_BLOB

CA 证书捆绑内存缓冲区。CURLOPT_CAINFO_BLOB

CURLOPT_PROXY_CAINFO

代理 CA 证书包。CURLOPT_PROXY_CAINFO

CURLOPT_PROXY_CAINFO_BLOB

代理 CA 证书捆绑内存缓冲区。CURLOPT_PROXY_CAINFO_BLOB

CURLOPT_ISSUERCERT

发行人证书。CURLOPT_ISSUERCERT

CURLOPT_ISSUERCERT_BLOB

颁发者证书内存缓冲区。CURLOPT_ISSUERCERT_BLOB

CURLOPT_PROXY_ISSUERCERT

代理颁发者证书。CURLOPT_PROXY_ISSUERCERT

CURLOPT_PROXY_ISSUERCERT_BLOB

代理颁发者证书内存缓冲区。CURLOPT_PROXY_ISSUERCERT_BLOB

CURLOPT_CAPATH

CA 证书包的路径。CURLOPT_CAPATH

CURLOPT_PROXY_CAPATH

代理 CA 证书包的路径。CURLOPT_PROXY_CAPATH

CURLOPT_CRLFILE

证书吊销列表。CURLOPT_CRLFILE

CURLOPT_PROXY_CRLFILE

代理证书吊销列表。CURLOPT_PROXY_CRLFILE

CURLOPT_CERTINFO

提取证书信息。CURLOPT_CERTINFO

CURLOPT_PINNEDPUBLICKEY

设置固定 SSL 公钥。CURLOPT_PINNEDPUBLICKEY

CURLOPT_PROXY_PINNEDPUBLICKEY

设置代理的固定 SSL 公钥。CURLOPT_PROXY_PINNEDPUBLICKEY

CURLOPT_RANDOM_FILE

提供熵随机数据的来源。CURLOPT_RANDOM_FILE

CURLOPT_EGDSOCKET

识别 EGD 套接字以获取熵。CURLOPT_EGDSOCKET

CURLOPT_SSL_CIPHER_LIST

要使用的密码。CURLOPT_SSL_CIPHER_LIST

CURLOPT_PROXY_SSL_CIPHER_LIST

要使用的代理密码。CURLOPT_PROXY_SSL_CIPHER_LIST

CURLOPT_TLS13_CIPHERS

要使用的 TLS 1.3 密码套件。CURLOPT_TLS13_CIPHERS

CURLOPT_PROXY_TLS13_CIPHERS

要使用的代理 TLS 1.3 密码套件。CURLOPT_PROXY_TLS13_CIPHERS

CURLOPT_SSL_SESSIONID_CACHE

禁用 SSL 会话 ID 缓存。CURLOPT_SSL_SESSIONID_CACHE

CURLOPT_SSL_OPTIONS

控制 SSL 行为。CURLOPT_SSL_OPTIONS

CURLOPT_PROXY_SSL_OPTIONS

控制代理 SSL 行为。CURLOPT_PROXY_SSL_OPTIONS

CURLOPT_KRBLEVEL

Kerberos 安全级别。CURLOPT_KRBLEVEL

CURLOPT_GSSAPI_DELEGATION

禁用 GSS-API 委派。CURLOPT_GSSAPI_DELEGATION

  SSH 选项

 

CURLOPT_SSH_AUTH_TYPES

SSH 身份验证类型。CURLOPT_SSH_AUTH_TYPES

CURLOPT_SSH_COMPRESSION

启用 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_PUBLIC_KEYFILE

CURLOPT_SSH_PRIVATE_KEYFILE

私钥的文件名。CURLOPT_SSH_PRIVATE_KEYFILE

CURLOPT_SSH_KNOWNHOSTS

已知主机的文件名。CURLOPT_SSH_KNOWNHOSTS

CURLOPT_SSH_KEYFUNCTION

已知主机处理的回调。CURLOPT_SSH_KEYFUNCTION

CURLOPT_SSH_KEYDATA

传递给 ssh 密钥回调的自定义指针。CURLOPT_SSH_KEYDATA

  其他选项

 

CURLOPT_PRIVATE

要存储的私有指针。CURLOPT_PRIVATE

CURLOPT_SHARE

共享对象使用。CURLOPT_SHARE

CURLOPT_NEW_FILE_PERMS

用于创建新远程文件的模式。CURLOPT_NEW_FILE_PERMS

CURLOPT_NEW_DIRECTORY_PERMS

创建新远程目录的模式。CURLOPT_NEW_DIRECTORY_PERMS

  远程登录选项

 

CURLOPT_TELNETOPTIONS

远程登录选项。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

 

posted @ 2021-10-18 12:01  jest549  阅读(2611)  评论(0编辑  收藏  举报