#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <curl/curl.h>
#define FILE_PATH "/tmp/test.dat"
#define TEST_URL "https://my.aliyuncs.com/testdata/test.dat" //服务器访问URL
static FILE *fp_aui = NULL;
static size_t curldemo_receive_callback( char *ptr, size_t size, size_t nmemb, void *userdata)
{
printf("curldemo_receive_callback: size:%d, nmemb:%d\n", size, nmemb);
int len = nmemb * size;
fwrite(ptr, size, nmemb, fp_aui);
return len;
}
size_t curldemo_send_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
printf("curldemo_send_callback: size:%d, nmemb:%d\n", size, nmemb);
return nmemb;
}
static int curdemo_progress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
{
printf("curdemo_progress_callback\n");
if ( dltotal > -0.1 && dltotal < 0.1 )
return 0;
int progress = (int)((dlnow/dltotal)*100);
printf("progress:%d\n", progress);
return 0;
}
int main(int argc, char*argv[]){
printf("------------cURL Demo-------------\n");
CURL* curl = NULL; CURLcode res;
fp_aui = fopen(FILE_PATH, "wb");
if (NULL == fp_aui) {
printf("open:file :%s error\n", FILE_PATH);
goto exit;
}
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, TEST_URL);
// 设置跳过SSL curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
// 设置重定向的最大次数 curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5); // 设置301、302跳转跟随location curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
// curl_easy_setopt(curl, CURLOPT_READFUNCTION, curldemo_send_callback); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curldemo_receive_callback);
//设置进度回调函数 curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, curdemo_progress_callback);
/* Perform the request, res will get the return code */ res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
if (NULL != fp_aui) {
fclose(fp_aui);
fp_aui = NULL;
}
exit:
return 0;
}
linux curl 请求https下载数据
猜你喜欢
转载自blog.csdn.net/u013420428/article/details/106543340
今日推荐
周排行