参考
https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
我个人认为:
创建,初始化,设置url地址,设置是否开启详解,设置标题,设置重定向,设置超时时间,验证对方证书,验证证书名称,
自定义HTTP标头,指定要发送的数据,请求HTTP POST,设置回调,给写回调传递指针,执行请求,释放。
创建curl
curl_global_init(CURL_GLOBAL_ALL)-全局libcurl初始化-初始化一切可能-返回非零值,错误;
curl_easy_init()-启动一个libcurl easy会话-返回NULL,则出现问题;
curl_easy_setopt(curl, CURLOPT_URL, "https:// ");提供要在请求中使用的URL;
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);开启/关闭详解模式-1显示-0禁用-返回CURLE_OK;
curl_easy_setopt(curl, CURLOPT_HEADER, 1);标题传给数据流-1包入写回调-0默认-返回CURLE_OK;
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);遵循HTTP 3XX重定向-1遵循任何location-0禁用-返回CURLE支持-CURL_UNKNOWN_OPTION不支持;
curl_easy_setopt(curl, CURLOPT_TIMEOUT);设置允许请求的最长时间-0默认(秒)-返回CURLE_OK-负值返回CURLE_BAD_FUNCTION_ARGUMENT;
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);验证对方的SSL证书-默认1启用-0禁用-支持返回CURLE_OK-不支持返回CURLE_UNKNOWN_OPTION;
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);根据主机验证证书的名称-默认2必须指示服务器是要连接的那个
-1返回错误且选项值不会被更改-0永远连接成功-成功返回CURLE_OK;
CURLcode res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);自定义HTTP标头-默认空-"Content-Type:application/"
-支持HTTP返回CURLE_OK-否则返回CURL_UNKOWN_OPTION;
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, char*);指定要发送到服务器的数据-返回CURLE_OK;
curl_easy_setopt(curl, CURLOPT_POST, 1);请求HTTP POST-1常规发布-默认0禁用-返回CURLE_OK;-否则返回CURL_UNKOWN_OPTION;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cookie);为写入收到的数据设置回调-默认'fwite'作为回调-返回CURLE_OK;
curl_easy_setopt(curl, CURL_WRITEDATA, this);传递给写回调的自定义指针-默认到标准输出的file*-返回CURLE_OK;
res = curl_easy_perform(curl);以阻塞方式执行整个请求,在所有init和setopt调用完成后调用此函数-正常返回CURL_OK(0)-发生错误返回非零;
释放curl
curl_global_cleanup();全局libcurl清理,释放curl_global_init获取的资源,与每个curl_easy_init()对应;