libcurl的C语言接口使用过程

来源:互联网 发布:淘宝工商注册代理公司 编辑:程序博客网 时间:2024/05/21 08:45

全局初始化

libcurl使用之前必须执行全局初始化,只能执行一次。curl_global_cleanup同理
curl_global_init(CURL_GLOBAL_ALL);

使用curl_version_info来查看所运行的libcurl细节,看看它支持一些什么功能


使用easy interface

为了使用easy interface,必须创建一个easy hadle。
CURL *easy_handle = curl_easy_init();

不应该在不同的线程中使用同一个easy_handle


设置handle属性

通过curl_easy_setopt来设置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://www.cnblogs.com/suiyingjie/archive/2012/11/12/2766332.html

官网: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


0 0
原创粉丝点击