linux c语言执行curl,libcurl的C语言接口使用过程

全局初始化 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(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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值