libcurl下载文件
一、初始化
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);
}
关于文件的读写操作,可以参考这里:
libcurl下载文件的更多相关文章
- 使用libcurl下载文件小例
libcurl是一个很强大的开源网络处理库,支持包括HTTP.HTTPS.FTP……一系列网络协议.用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要 ...
- c/c++常用代码--使用libcurl下载文件
#pragma once #include <stdio.h>#include <stdlib.h> #include <curl/curl.h> #ifdef ...
- libcurl下载文件简易demo
size_t test_save(void *ptr, size_t size, size_t nmemb, void *stream) { size_t sizes = size * nmemb; ...
- 使用libcurl下载https地址的文件
使用libcurl下载https地址的文件 void downLoadFile(std::string filename, std::string newFilename) { CURL *curl_ ...
- 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...
- libcurl开源库在Win7 + VS2012环境下编译、配置详解 以及下载文件并显示下载进度 demo(转载)
转载:http://blog.csdn.net/fengshuiyue/article/details/39530093(基本教程) 转载:https://my.oschina.net/u/14207 ...
- libcurl使用心得-包括下载文件不存在处理相关(转)
libcurl使用心得 Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持 ...
- [libcurl]_[0基础]_[使用libcurl下载大文件]
场景: 1. 在Windows编程时, 下载http页面(html,xml)能够使用winhttp库,可是并非非常下载文件,由于会失败. 由此引出了WinINet库,无奈这个库的稳定性比較低,使用样例 ...
- 使用curl在命令行中下载文件
http://m.blog.csdn.net/blog/mayadong7349/7019208 使用curl在命令行中下载文件 linux下curl简单应用详解 http://blog.sina.c ...
随机推荐
- Java编程的逻辑 (16) - 继承的细节
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- 解决导入Android例子时“Unable to resolve target 'android-x' ”的错误
今天导入一个Android的例子程序,出现了Unable to resolve target 'android-2' 的错误. 最后google之后才发现原来是 ADK版本 :---API Level ...
- centos7配置svn钩子hooks脚本自动同步代码到项目目录
由于项目需要,svn提交后的代码希望再测试服务器上测试,每次提交后还要手动去svn update一次 十分麻烦,配置好svn钩子以后就省去了这些麻烦. 进入svn版本库目录找到hooks目录找到文件p ...
- net mvc cms
.NET作品集:linux下的.net mvc cms cms程序架构 本程序是主要是用于企业网站开发的,也可以做博客程序,程序是从之前上一篇的.net 博客程序改进过来的,主要技术由webfor ...
- spark优化之临时目录
官方是这样说的: Directory to use for "scratch" space in Spark, including map output files and RDD ...
- 记一次重装系统(.net开发环境重装问题汇总)
起因: 有一天,我突然感觉到电脑的运行明显变慢,慢的可怕,启动任务资源管理器一看,不看不知道,一看吓一跳,CPU使用率,物理内存皆100%,当时的第一印象,是电脑中病毒了吧!!,进入进程一看,有几个名 ...
- HTML5本地存储localStorage、sessionStorage及IE专属UserData
By:王美建 from:http://www.cnblogs.com/wangmeijian/p/4518606.html 转载请保留署名和出处! 在客户端存储数据用的最普遍的方式非cookie莫属, ...
- JavaScript的计时器的工作原理
最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成中文,一来是为了和大家分享,二来是为了加深自 ...
- GBDT算法
GBDT通过多轮迭代,每轮迭代产生一个弱分类器,其中弱分类器通常选择为CART树,每个分类器在上一轮分类器的残差基础上进行训练. 对于GBDT算法,其中重要的知识点为: 1.GBDT是梯度下降法从参数 ...
- 8.8 正睿暑期集训营 Day5
目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...