curl_global_init(CURL_GLOBAL_ALL);
使用curl_version_info来查看所运行的libcurl细节,看看它支持一些什么功能
CURL *easy_handle = curl_easy_init();
不应该在不同的线程中使用同一个easy_handle
int ret = curl_easy_setopt(easy_handle, CURLOPT_URL, "http://speedtest.wdc01.softlayer.com/downloads/test10.zip");
可以通过curl_easy_reset来重置curl_easy_setopt设置的内容,把它们还原成默认值
设置CURLOPT_VERBOSE为1L来输出详细信息以供调试,如果还不够,继续设置CURLOPT_DEBUGFUNCTION
上面的一些过程仅仅是设置好了handle的参数,还没有真正的执行网络请求。
调用curl_easy_perform将执行网络请求
ret = curl_easy_perform(easy_handle); if (ret != CURLE_OK) { cout << ret << ":" << curl_easy_strerror(static_cast<CURLcode>(ret)) << endl; switch (ret) { case CURLE_HTTP_RETURNED_ERROR: { int code = 0; curl_easy_getinfo(easy_handle, CURLINFO_RESPONSE_CODE, &code); printf("HTTP error code:%d\n", code); break; } } }
curl_easy_perform会返回一个编号来告诉你成功或者失败,你可以使用CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);来获得更多的错误信息
如果想重新发起一个新的请求,官方推荐重复利用这个easy_handle,这样libcurl会尝试重复利用先前的连接
curl_easy_pause来暂停或者恢复一个连接
当请求执行完成之后可以释放掉handle资源
curl_easy_cleanup(easy_handle);当不再需要发送网络请求时,释放全局资源
curl_global_cleanup();
libcurl使用顺序
首先初始化全局设置:curl_global_init
初始化easy_handle:curl_easy_init
设置handle的参数:curl_easy_setopt
执行请求:curl_easy_perform
释放handle:curl_easy_cleanup
释放全局资源:curl_global_cleanup
libcurl教程:http://blog.csdn.net/JGood/article/details/4787670
官网:http://curl.haxx.se/
libcurl C API:http://curl.haxx.se/libcurl/c/
C++使用libcurl做HttpClient :http://blog.csdn.net/huyiyang2010/article/details/7664201
libcurl curl_multi 非阻塞方式 请求网页 http:http://blog.sina.com.cn/s/blog_731d783001011tse.html
版权声明:本文为博主原创文章,未经博主允许不得转载。