C++使用curl进行http请求下载文件
时间: 2023-11-03 18:57:39 浏览: 149
使用C++的curl库可以方便地进行HTTP请求,包括下载文件。
以下是一个简单的示例代码:
```c++
#include <curl/curl.h>
#include <fstream>
// 回调函数,将下载的数据写入文件
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main() {
CURL *curl;
FILE *fp;
CURLcode res;
const char *url = "http://example.com/file.zip";
const char *output_path = "file.zip";
// 初始化curl
curl = curl_easy_init();
if (curl) {
// 打开输出文件
fp = fopen(output_path, "wb");
if (fp) {
// 设置请求URL
curl_easy_setopt(curl, CURLOPT_URL, url);
// 设置回调函数
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
// 将数据写入文件
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
// 执行请求
res = curl_easy_perform(curl);
// 检查请求是否成功
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
// 关闭输出文件
fclose(fp);
}
// 清理curl
curl_easy_cleanup(curl);
}
return 0;
}
```
在代码中,我们首先使用`curl_easy_init()`函数初始化curl,然后设置请求URL和回调函数,最后使用`curl_easy_perform()`函数执行请求。
回调函数`write_data()`将下载的数据写入文件,它的返回值表示成功写入的数据大小。
注意,我们在使用完curl后需要使用`curl_easy_cleanup()`函数清理它。
阅读全文