Skip to content

curl 基本函数介绍

Jun edited this page Dec 10, 2021 · 2 revisions

curl-基本函数介绍

  1. curl_global_init();这个函数是进行curl库的初始化,这个函数与curl_global_cleanup配套使用,当调用了一次后,在没有调用curl_global_cleanup之前不要再次调用。

  2. curl_global_cleanup();对curl_global_init进行的一些操作进行清理。

  3. CURL *curl_easy_init( );用于产生一个CURL对象用于进行网络相关的操作,此对象类似于文件指针,不使用它的时候需要进行清理释放。

  4. void curl_easy_cleanup(CURL *curl);用于对CURL*的清理释放。

  5. void curl_easy_reset(CURL *handle );重新初始化CURL句柄的选项设置。

  6. CURLcode curl_easy_getinfo(CURL *curl,CURLINFO info, ... );查询CRUL会话的内部信息,具体说明请参考curl自带文档。

  7. CURLcode curl_easy_setopt(CURL *curl,CURLoption option, ...);此函数是curl中最核心的函数,基本所有的网络操作的设定都需要它去进行,他的参数等也非常的复杂,建议自行搜索这个函数相关的内容。

  8. 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;
}