如何从服务器接收zip文件:C / C ++

我正在使用libcurl并能够receive json response并将其saving it to file

以下是代码

  #include  #include  #include  #include  #define URL "http://www.joes-hardware.com/tools.html" size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); return written; } int main(void) { CURL *curl; FILE *fp; CURLcode res; //char *url = "http://www.joes-hardware.com/tools.html"; char *url= URL; char outfilename[FILENAME_MAX] = "./json"; curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); 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); curl_easy_cleanup(curl); fclose(fp); } return 0; } 

作为我正在开发的应用程序的一部分,现在它必须从服务器获取zip文件。

假设URL的格式如下所示:

 #define URL "https://Server/File.zip" 

对于此类URL,代码无法保存zip文件。 怎么做到这一点?

我正在为LINUX平台开发。

解决了这个问题。 问题与HTTPS connection添加certificate基于以下链接:

无法使用cURL连接到HTTPS站点。 返回0长度内容。 我能做什么?

使用CURL从HTTPS连接中获取内容

 #define CURL_STATICLIB #include  #include  #include  #include  #include  #include  #define false 0 size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written; written = fwrite(ptr, size, nmemb, stream); return written; } int main(void) { CURL *curl; FILE *fp; CURLcode res; //char *url = "http://www.joes-hardware.com/tools.html"; char *url= "https://HOST/FileName.zip"; //char *url= "https://wordpress.org/"; char outfilename[FILENAME_MAX] = "./json.zip"; curl_version_info_data * vinfo = curl_version_info(CURLVERSION_NOW); if(vinfo->features & CURL_VERSION_SSL){ printf("CURL: SSL enabled\n"); }else{ printf("CURL: SSL not enabled\n"); } curl = curl_easy_init(); if (curl) { fp = fopen(outfilename,"wb"); curl_easy_setopt(curl, CURLOPT_URL, url); /* Setup the https:// verification options - note we do this on all requests as there may be a redirect from http to https and we still want to verify */ //curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1); curl_easy_setopt(curl, CURLOPT_CAINFO, "./ca-bundle.crt"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform(curl); curl_easy_cleanup(curl); int i=fclose(fp); if( i==0) system("unzip -j json.zip"); } return 0; }