libcurl常用接口及选项汇总

 

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不知道该翻译成啥^_^)。

 

你可能感兴趣的:(编程基础)