使用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请求)相关推荐

  1. PHP--使用curl下载文件

    一般PHP用curl下载文件,是用变量存储curl接受到的数据,再写入文件里. 这样子有不好的一点,如果文件的结果比较大,那么会占用很大的内存 $ch = curl_init(); curl_seto ...

  2. PHP中,使用CURL下载文件

    如果使用CURL下载从微信手机端上传的图片?参考下面代码 /*** CURL下载文件 成功返回文件名,失败返回false* @param $url* @param string $savePath* ...

  3. feign 使用示例:动态url、动态参数、下载文件、请求体

    文章目录 构建FeignClient接口实现 动态url 带参数的请求 @Param 带动态参数的请求 @QueryMap 下载文件的请求 带请求体的请求 @Body 官方使用文档: 链接 https ...

  4. 【ERROR】curl下载文件并保留文件名

    curl下载文件的时候如果遇到 www.xxxx.com?id=123这种类型的网址,在下载文件的时候使用 -O 参数,下载的文件名会是id=123.网上查了很久发现还有一个参数 -J 可以保留文件名 ...

  5. CURL下载文件简易进度条

    背景 curl下载文件比较方便,sample里的进度打印比较鸡肋,网上搜了一下C打印进度条,随便改改,就ok了,代码贴起来! curl 回调函数进度打印输出 int download_progress ...

  6. C++使用curl下载文件(get请求)

    使用curl也可以下载文件,代码如下: #include<iostream> #include<string> #include<curl\curl.h> usin ...

  7. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  8. 命令行curl上传文件_命令行基础知识:使用cURL下载文件

    命令行curl上传文件 Client URL, or simple cURL is a library and command-line utility for transferring data b ...

  9. 如何在GitHub正确地使用 Curl 下载文件?

    Curl是在 Linux 终端中下载文件的绝佳工具. 下载与原始文件同名的文件的常用语法非常简单: curl -O URL_of_the_file 这在大多数情况下都有效,但是,您会注意到,有时当您从 ...

  10. egg自带ctx.curl下载文件

    查看ctx.url的源码发现,该方式底层是使用到例如urllib的request方法,该方法只是默认把数据转为Buffer就直接返回了,下载文件的话只需要将Buffer转为Stream即可: 返回的数 ...

最新文章

  1. telegram 内联模式 介绍
  2. 英文语句处理(空格处理)
  3. Excel加密的Sheet如何hack
  4. Python3 图片(jpg、bmp、png)转PDF
  5. 【监控】Grafana面板修改记录
  6. 如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
  7. 【渝粤教育】国家开放大学2018年春季 0184-21T行政职业能力 参考试题
  8. WEB可以调节的框架页
  9. Spanner如何实现事务?
  10. 自来水供水收费管理系统
  11. CUDA10.0网盘下载
  12. 树莓派4B开机自动发微信报告ip地址
  13. 【财务_会计3_1】会计科目的概念
  14. 学好线性代数,我推荐这本书
  15. 10后小学生都能教你学编程了!低龄编程的下限在哪?
  16. 天球坐标系和地球坐标系
  17. 【深度思考,极客大学Java进阶训练营
  18. font-variant-numeric
  19. css雪碧图动画,CSS3动画——雪碧图的实现
  20. 网站降权的特征和原因有哪些呢?

热门文章

  1. C盘AppData文件占用83.7G?
  2. 串口助手使用16进制发送数据
  3. 2020-1024=996(程序员节)
  4. CANoe测试:CAPL Test Module的2种创建方式
  5. laravel excel 导出图片
  6. 下载Google瓦片地图并在Unity中作为场景底图
  7. 搜狗批量推送软件-搜狗批量推送工具【2022最新】
  8. 泛化误差,偏差方差分解
  9. c语言题目关于欧姆定律,电压_电流_电阻_欧姆定律计算含答案.doc
  10. 2022-06-08 iPhone快捷指令自动切换壁纸