【发布时间】:2014-08-28 04:05:53
【问题描述】:
我正在 Linux 平台上开发。我正在使用libcurl 并且能够receive json response 并将其保存到文件中。下面是代码。
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string.h>
#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;
//const 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 文件。
如何做到这一点?
【问题讨论】:
-
您是否检查过您在此列表中调用的 每个 api 的结果代码,看看它们是否有任何失败?特别是
fopen和curl_easy_perform,但all 并不是一个坏主意。httpsurl 的设置可能比简单的 pull 复杂得多。 see this. -
@WhozCraig Ya 该代码对于
http请求说..."http://www.joes-hardware.com/tools.html".. 它保存对相应文件的json 响应.. 但请求https://Server/File.zip没有保存