一、初始化

CURL *pHandler = curl_easy_init();

 

二、设置请求参数;

调用curl_easy_setopt方法,设置选项

curl_easy_setopt(pHandler , CURLOPT_WRITEFUNCTION, WriteData);

curl_easy_setopt(pHandler , CURLOPT_WRITEDATA, pFile);

 

//设置请求的url地址

curl_easy_setopt(pHandler , CURLOPT_URL, strUrl.c_str());

//如果为post请求,这里设置提交的参数

//curl_easy_setopt(pHandler , CURLOPT_POSTFIELDS, strPostData.c_str());

curl_easy_setopt(pHandler , CURLOPT_FAILONERROR, true);
curl_easy_setopt(pHandler , CURLOPT_TIMEOUT, 60);  //超时时间(秒)
curl_easy_setopt(pHandler , CURLOPT_NOSIGNAL, true);

 

三、执行下载

CURLcode codeRet = curl_easy_perform(pHandler);

 

四、获取返回的http状态码

long retcode = 0;

curl_easy_getinfo(pHandler, CURLINFO_RESPONSE_CODE , &retcode);

 

五、清理

curl_easy_cleanup(pHandler);

 

if (codeRet == CURLE_OK && (retcode == 200 || retcode == 304 || retcode == 204))

{

//下载成功

}

else

{

//下载失败

}

 

size_t WriteData(const char *ptr, size_t size, size_t nmemb, FILE *stream)
{
    if (!ptr || !stream)
    {
        return 0;
    }

    return fwrite(ptr, size, nmemb, stream);
}

 

关于文件的读写操作,可以参考这里:

fopen

fseek

ftell

fread

fwrite

libcurl下载文件的更多相关文章

  1. 使用libcurl下载文件小例

    libcurl是一个很强大的开源网络处理库,支持包括HTTP.HTTPS.FTP……一系列网络协议.用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要 ...

  2. c/c++常用代码--使用libcurl下载文件

    #pragma once #include <stdio.h>#include <stdlib.h> #include <curl/curl.h> #ifdef   ...

  3. libcurl下载文件简易demo

    size_t test_save(void *ptr, size_t size, size_t nmemb, void *stream) { size_t sizes = size * nmemb; ...

  4. 使用libcurl下载https地址的文件

    使用libcurl下载https地址的文件 void downLoadFile(std::string filename, std::string newFilename) { CURL *curl_ ...

  5. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  6. libcurl开源库在Win7 + VS2012环境下编译、配置详解 以及下载文件并显示下载进度 demo(转载)

    转载:http://blog.csdn.net/fengshuiyue/article/details/39530093(基本教程) 转载:https://my.oschina.net/u/14207 ...

  7. libcurl使用心得-包括下载文件不存在处理相关(转)

    libcurl使用心得 Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持 ...

  8. [libcurl]_[0基础]_[使用libcurl下载大文件]

    场景: 1. 在Windows编程时, 下载http页面(html,xml)能够使用winhttp库,可是并非非常下载文件,由于会失败. 由此引出了WinINet库,无奈这个库的稳定性比較低,使用样例 ...

  9. 使用curl在命令行中下载文件

    http://m.blog.csdn.net/blog/mayadong7349/7019208 使用curl在命令行中下载文件 linux下curl简单应用详解 http://blog.sina.c ...

随机推荐

  1. ***PHP 遍历数组的方法foreach

    foreach  http://php.net/manual/zh/control-structures.foreach.php (PHP 4, PHP 5) foreach 语法结构提供了遍历数组的 ...

  2. Java编程的逻辑 (67) - 线程的基本协作机制 (上)

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  3. LINQ基本语句

    一.什么是LINQ 1.定义:LINQ是Language Integrate Query的缩写,它在对象和数据之间建立一种对应关系,可以使用访问内存对象的方式查询数据集合. 2.特点:由于LINQ中查 ...

  4. bzoj 1190

    思路:分层dp,因为给的w都是a*(2 ^ b)的形式, 我们将这些物品按b分层, 我们设 dp[ i ][ j ]表示在 第 i 层 容量为(j << i)的最大值, 然后通过层与层之间 ...

  5. 000 关于IDEA的基本环境配置以及快速使用(git拉载程序,Jdk安装,tomcat部署,应用程序打包运行)

    刚开始工作的时候,不熟悉,所以整理过这个文档. 一:导入git程序 1.准备 git链接 IDEA软件,最好是终极版 2.第一步选择从版本控制上选择git 3.拷贝源于目标地址 4.这时候根据引导进行 ...

  6. 使用SOCKET获取网页的内容

    使用fsockopen()函数来实现获取页面信息,完整代码如下 //设置字符集(由于要抓取的网易网站字符集编码是gbk编码) header("content-type:text/html;c ...

  7. Spring-Session实现Session共享Redis集群方式配置教程

    循序渐进,由易到难,这样才更有乐趣! 概述 本篇开始继续上一篇的内容基础上进行,本篇主要介绍Spring-Session实现配置使用Redis集群,会有两种配置方式,一种是Redis-Cluster, ...

  8. 使用eclipse svn塔建(配置)时的一点点心得

    有没有人遇到下面这种情况??自己创建的SVN如下: 但网上别人搭建好的是这样子的: 就是为什么我的只有个主文件,而没有src.webroot.meta-inf.web-inf等子文件呢?? 这是我找了 ...

  9. C#开发Unity游戏教程之游戏对象的属性变量

    C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性——变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章只是 ...

  10. BZOJ4175 : 小G的电话本

    用后缀树统计出出现了x次的本质不同的子串的个数,最后再乘以x,得到一个多项式. 这个多项式常数项为0,但是一次项不为0. 于是把整个多项式除以一次项,通过多项式求ln和多项式求exp求出它的幂. 最后 ...