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