-
Notifications
You must be signed in to change notification settings - Fork 4
curl 基本函数介绍
Jun edited this page Dec 10, 2021
·
2 revisions
-
curl_global_init();
这个函数是进行curl库的初始化,这个函数与curl_global_cleanup配套使用,当调用了一次后,在没有调用curl_global_cleanup之前不要再次调用。 -
curl_global_cleanup();
对curl_global_init进行的一些操作进行清理。 -
CURL *curl_easy_init( );
用于产生一个CURL对象用于进行网络相关的操作,此对象类似于文件指针,不使用它的时候需要进行清理释放。 -
void curl_easy_cleanup(CURL *curl);
用于对CURL*的清理释放。 -
void curl_easy_reset(CURL *handle );
重新初始化CURL句柄的选项设置。 -
CURLcode curl_easy_getinfo(CURL *curl,CURLINFO info, ... );
查询CRUL会话的内部信息,具体说明请参考curl自带文档。 -
CURLcode curl_easy_setopt(CURL *curl,CURLoption option, ...);
此函数是curl中最核心的函数,基本所有的网络操作的设定都需要它去进行,他的参数等也非常的复杂,建议自行搜索这个函数相关的内容。 -
CURLcode curl_easy_perform(CURL *curl);
针对curl_easy_setopt设置好的内容参数进行相应的网络操作。
通过curl发起get请求
CURLcode CurlTools::HttpGet(const std::string & strUrl, std::string & strResponse, int nTimeout) {
CURLcode res;
CURL* pCURL = curl_easy_init();
LOGI("init libcurl");
if (pCURL == NULL) {
return CURLE_FAILED_INIT;
}
LOGI(" libcurl get :%s", strUrl.c_str());
curl_easy_setopt(pCURL, CURLOPT_URL, strUrl.c_str());
//不验证证书
curl_easy_setopt(pCURL, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(pCURL, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(pCURL, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(pCURL, CURLOPT_TIMEOUT, nTimeout);
curl_easy_setopt(pCURL, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(pCURL, CURLOPT_WRITEFUNCTION, CurlTools::receive_data);
curl_easy_setopt(pCURL, CURLOPT_WRITEDATA, (void*)&strResponse);
res = curl_easy_perform(pCURL);
curl_easy_cleanup(pCURL);
return res;
}