0

我正在尝试从 Internet 下载我的应用程序所需的文件(作为安装的一部分),以便在应用程序第一次启动时下载所需的文件。现在我将它们放在 Google Drive 上并公开,然后我将使用 libcURL 下载它们。问题是,我就是无法获取数据。

我使用以下链接:https://docs.google.com/uc?id=documentID&export=download并替换documentID为 id。但是,当我尝试连接到该站点时,它不断给我一小段 HTML 代码,基本上说“暂时移动”,并给了我一个指向新 URL 的链接。当我在我的程序中使用新链接时,我没有得到任何输出。但是,即使我没有登录,这两个链接在我的网络浏览器中都可以正常工作。那么为什么它们不能在我的程序中工作呢?我没有正确设置 SSL 选项,还是 Google Drive 根本不适合这种事情?

这是我的代码:

#include <curl/curl.h>

int main()
{
    curl_global_init(CURL_GLOBAL_ALL);

    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://docs.google.com/uc?id=documentID&export=download");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
        res = curl_easy_perform(curl);
    }
    curl_easy_cleanup(curl);
    return 0;
}

任何帮助,将不胜感激。

4

2 回答 2

2

您需要设置CURLOPT_FOLLOWLOCATION选项来告诉 cURL 遵循重定向。

于 2012-07-25T17:51:59.327 回答
1

我不知道这是否直接有帮助,但我总是打电话

curl_global_init(CURL_GLOBAL_ALL);

我看你不使用。我在线程 SSL 代码示例http://curl.haxx.se/libcurl/c/threaded-ssl.html中看到了这个调用。此 `curl_global_init() 调用将执行 SSL 初始化等。在此链接http://curl.haxx.se/libcurl以及此处的 libcurl 教程http://curl.haxx.se/libcurl/c/libcurl-tutorial.html中对此进行了讨论

于 2012-07-25T17:57:18.303 回答