1.curl_global_init
CURLcode curl_global_init(long flags );
全局libcurl初始化函数。返回值非0表示初始化失败,我们也将不能使用其他的curl函数。
libcurl有一个必须设置和维护的全局常量环境,我们需要在程序的开始调用curl_global_init以初始化一些设置以及申请相应的资源。常用的参数有:
(1)CURL_GLOBAL_ALL 初始化所有设置。
(2)CURL_GLOBAL_SSL 初始化SSL。
(3)CURL_GLOBAL_WIN32 初始化WIN32 socket库
2.curl_global_cleanup
void curl_global_cleanup(void);
释放由curl_global_init申请的资源。需要在程序退出前或者不再使用curl时调用。
3.curl_easy_init
CURL *curl_easy_init( );
创建一个curl easy session。返回值为NULL表示调用失败。本函数必须是首先调用的函数,本函数返回一个CURL类型的easy handle,该handle将作为其他easy接口的入参数使用。在libcurl使用完成之后,本函数必须对应一个curl_easy_cleanup函数调用。
如果在调用curl_easy_init之前没有调用全局初始化函数curl_global_init,则本函数会调用全局初始化函数curl_global_init以完成全局初始化操作。
4.curl_easy_setopt
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
设置curl handle的选项参数。每一次调用只能设置一个选项。依据选项(option)的不同,选项参数可以是不同类型的,比如长整型,函数指针,结构体指针,字符串等。函数执行成功返回CURLE_OK(0),其他非0值表示执行失败。
option选项参数有十几大类上百种参数,包括BEHAVIOR、CALLBACK、ERROR、NETWORK、NAMES and PASSWORDS、HTTP、SMTP、TFTP、FTP、RTSP、PROTOCOL、CONNECTION、SSL and SECURITY、SSH、TELNET和OTHER OPTIONS。下面列举几个常用的选项以及用法:
//回调函数申明
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
//数据定义
const char *data = "data to send";
//函数返回值定义
int ret = CURLE_OK;
CURL *curl = curl_easy_init();
if(curl) {
//以下仅为相关函数的使用示例,并未对函数返回值进行判断,实际应用需要判断返回值。
//设置URL
ret = curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
//设置数据接收回调函数
ret = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
//设置回调函数的第四个参数,用于接收数据。
ret = curl_easy_setopt(curl, CURLOPT_WRITEDATA, &internal_struct);
//设置使用POST方法
ret = curl_easy_setopt(curl, CURLOPT_POST, 1L);
//设置POST数据的长度
ret = curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);
//设置POST的数据
ret = curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
//执行命令
ret = curl_easy_perform(curl);
//关闭easy handle,与curl_easy_init对应
curl_easy_cleanup(curl);
}
5.curl_easy_perform
CURLcode curl_easy_perform(CURL * easy_handle );
本函数将连接到远程站点,执行必要的命令并调用回调函数接收数据,在执行完成(成功/失败)之前,该函数不会返回。返回值为CURLE_OK(0)表示执行成功,非0值表示失败。
6.curl_easy_cleanup
void curl_easy_cleanup(CURL * handle );
停止一个easy handle,调用本函数会关闭所有由入参handle使用的连接,在请求/发送没有结束之前不要调用本函数。
7.curl_easy_reset
void curl_easy_reset(CURL *handle );
清空一个libcurl 会话句柄的所有选项设置。本接口会将handle的状态恢复成调用curl_easy_init后的初始状态,但是本接口不会清除句柄的以下信息:存在的连接、session ID缓存、DNS缓存、cookies和shares(shares不知道该翻译成啥^_^)。