C++使用curl下载文件(post请求)
使用curl经过post请求下载,代码如下:
#include<iostream>
#include<string>
#include<curl\curl.h>
using namespace std;//下载文件数据接收函数
size_t dl_req_reply(void *buffer, size_t size, size_t nmemb, void *user_p)
{FILE *fp = (FILE *)user_p;size_t return_size = fwrite(buffer, size, nmemb, fp);//cout << (char *)buffer << endl;return return_size;
}//http POST请求文件下载
CURLcode dl_curl_post_req(const string &url, const string &postParams, string filename)
{//int len = filename.length();//char* file_name = new char(len + 1);//char*最后有一个结束字符\0//strcpy_s(file_name, len + 1, filename.c_str());//FILE *fp = fopen(file_name, "wb");const char* file_name = filename.c_str();char* pc = new char[1024];//足够长strcpy(pc, file_name);FILE *fp = fopen(pc, "wb");// curl初始化 CURL *curl = curl_easy_init();// curl返回值 CURLcode res;if (curl){// set params//设置curl的请求头struct curl_slist* header_list = NULL;header_list = curl_slist_append(header_list, "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6788.400 QQBrowser/10.3.2843.400");header_list = curl_slist_append(header_list, "Content-Type: application/x-www-form-urlencoded; charset=UTF-8");curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);//不接收响应头数据0代表不接收 1代表接收curl_easy_setopt(curl, CURLOPT_HEADER, 0);//设置请求为post请求curl_easy_setopt(curl, CURLOPT_POST, 1);//设置请求的URL地址curl_easy_setopt(curl, CURLOPT_URL, url.c_str());//设置post请求的参数curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postParams.c_str());//设置ssl验证curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);//CURLOPT_VERBOSE的值为1时,会显示详细的调试信息curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);//设置数据接收和写入函数curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &dl_req_reply);curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);//设置超时时间//curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 6);//curl_easy_setopt(curl, CURLOPT_TIMEOUT, 6);// 开启post请求res = curl_easy_perform(curl);}//释放curl curl_easy_cleanup(curl);//释放文件资源fclose(fp);return res;
}
int main()
{string dl_url = "post请求下载文件地址";string postParams = "post请求下载参数";string filename = "文件存储名称";auto res3 = dl_curl_post_req(dl_url, "", filename);if (res3 == CURLE_OK){cout << "下载成功!" << endl;}getchar();return 0;
}
将代码中的下载地址,请求参数和文件名替换成自己的,就可以直接下载了。
C++使用curl下载文件(post请求)相关推荐
- PHP--使用curl下载文件
一般PHP用curl下载文件,是用变量存储curl接受到的数据,再写入文件里. 这样子有不好的一点,如果文件的结果比较大,那么会占用很大的内存 $ch = curl_init(); curl_seto ...
- PHP中,使用CURL下载文件
如果使用CURL下载从微信手机端上传的图片?参考下面代码 /*** CURL下载文件 成功返回文件名,失败返回false* @param $url* @param string $savePath* ...
- feign 使用示例:动态url、动态参数、下载文件、请求体
文章目录 构建FeignClient接口实现 动态url 带参数的请求 @Param 带动态参数的请求 @QueryMap 下载文件的请求 带请求体的请求 @Body 官方使用文档: 链接 https ...
- 【ERROR】curl下载文件并保留文件名
curl下载文件的时候如果遇到 www.xxxx.com?id=123这种类型的网址,在下载文件的时候使用 -O 参数,下载的文件名会是id=123.网上查了很久发现还有一个参数 -J 可以保留文件名 ...
- CURL下载文件简易进度条
背景 curl下载文件比较方便,sample里的进度打印比较鸡肋,网上搜了一下C打印进度条,随便改改,就ok了,代码贴起来! curl 回调函数进度打印输出 int download_progress ...
- C++使用curl下载文件(get请求)
使用curl也可以下载文件,代码如下: #include<iostream> #include<string> #include<curl\curl.h> usin ...
- php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件
PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...
- 命令行curl上传文件_命令行基础知识:使用cURL下载文件
命令行curl上传文件 Client URL, or simple cURL is a library and command-line utility for transferring data b ...
- 如何在GitHub正确地使用 Curl 下载文件?
Curl是在 Linux 终端中下载文件的绝佳工具. 下载与原始文件同名的文件的常用语法非常简单: curl -O URL_of_the_file 这在大多数情况下都有效,但是,您会注意到,有时当您从 ...
- egg自带ctx.curl下载文件
查看ctx.url的源码发现,该方式底层是使用到例如urllib的request方法,该方法只是默认把数据转为Buffer就直接返回了,下载文件的话只需要将Buffer转为Stream即可: 返回的数 ...
最新文章
- telegram 内联模式 介绍
- 英文语句处理(空格处理)
- Excel加密的Sheet如何hack
- Python3 图片(jpg、bmp、png)转PDF
- 【监控】Grafana面板修改记录
- 如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
- 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题
- WEB可以调节的框架页
- Spanner如何实现事务?
- 自来水供水收费管理系统
- CUDA10.0网盘下载
- 树莓派4B开机自动发微信报告ip地址
- 【财务_会计3_1】会计科目的概念
- 学好线性代数,我推荐这本书
- 10后小学生都能教你学编程了!低龄编程的下限在哪?
- 天球坐标系和地球坐标系
- 【深度思考,极客大学Java进阶训练营
- font-variant-numeric
- css雪碧图动画,CSS3动画——雪碧图的实现
- 网站降权的特征和原因有哪些呢?