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 ...
随机推荐
- 使用react中遇到的问题
引入antdesign中Carousel走马灯时遇到问题? Uncaught Error: Element ref was specified as a string (slick) but no o ...
- Python Extension 编译问题
Python 的一大好处是调用C扩展程序相当方便,但是 Windows 下的话,编译器版本是一个大问题.以Python27为例,官方版本时采用VC2008编译的.在setup.py中添加Extensi ...
- IntelliJ IDEA 设置Output 窗口字体大小
Settings——>Editor——>Colors&Fonts——>Console Font 如图: 字体调好了以后使用起来眼睛就轻松多了
- Eclipse导入Android项目的方法(转)
原文:http://www.cnblogs.com/SkyD/archive/2010/11/25/1887219.html 看网上流传的Eclipse导入项目的方法都是在新建Android程序时使用 ...
- CentOS6下Jenkins连接Git服务器出错的问题
今天研究GitLab+Jenkins自动集成时,出现Failed to connect to repository : Command "git config --local credent ...
- 【Java】 大话数据结构(5) 线性表之双向链表
本文根据<大话数据结构>一书,实现了Java版的双向链表. 在每个数据结点中都有两个指针,分别指向直接后继和直接前驱,这样的链表称为双向链表. 双向链表的结构如图所示: 查找元素可以根据元 ...
- cookie之困
参见http://yun.baidu.com/share/link?shareid=1575530779&uk=1795493794 cookie三元组(name,domain,path),它 ...
- Beta冲刺准备
过去存在的问题: 界面不够美观 推荐不够人性化 代码不够符合开闭原则 我们已经做了哪些调整/改进: 本来想引入springAndroid,但看了下google的官方文档,不建议引入第三方框架:代码重构 ...
- js跨域请求(jsonp)
jsonp是跨域请求的手段之一. jsonp的原理: 先来看看下面这段代码 <!DOCTYPE html> <html lang="en"> <hea ...
- Kernel 4.9的BBR拥塞控制算法与锐速
重要的事情说三遍! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! BBR并不能突破带宽限制!!! 它的功能如下: 1.在高丢包率与低速率的网络中提升传输效果,充分利用带宽. 2.降低 ...