设置cookie:
CURL* curl = curl_easy_init();
CURLSH* curlsh = m_curlShareHandle;
curl_easy_setopt(curl, CURLOPT_SHARE, curlsh);
curl_easy_setopt(curl, CURLOPT_COOKIELIST, strCookie.data());
curl_easy_cleanup(curl);
其中CURLOPT_SHARE会走到setopt.c的 data->cookies = data->share->cookies;这句,
让CURL* curl和m_curlShareHandle共享cookie内容,然后CURLOPT_COOKIELIST把cookie字符串写入CURL* curl,
就相当于写到共享m_curlShareHandle句柄里了。
下次在创建一个http请求的时候:
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookieJarPathString.c_str());
相当于设置这个CURL* curl句柄的cookie读取文件路径
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookieJarPathString.c_str());
相当于设置这个CURL* curl句柄的cookie保存文件路径
curl_easy_setopt(job->m_handle, CURLOPT_SHARE, m_shareCookieJar->getCurlShareHandle());
相当于让这次的http请求从共享句柄里取出cookie内存缓存,再做发送。