我試圖下載需要我的應用程序從互聯網上一個文件(安裝的一部分),以便在第一時間應用程序啓動時,需要的文件被下載。現在我將它們放在Google Drive上並公開,然後我將使用libcURL下載它們。問題是,我無法獲取數據。的libcurl和谷歌文件
我使用下面的鏈接:https://docs.google.com/uc?id=documentID&export=download
,並用編號來取代documentID
。當我嘗試連接到網站時,它不斷給我一小段HTML代碼,基本上說「暫時移動」,並給我一個鏈接到新的URL。當我在我的程序中使用新鏈接時,我什麼也得不到輸出。但是,當我沒有登錄時,這兩個鏈接在我的Web瀏覽器中工作得很好,,甚至。那麼,爲什麼他們不在我的程序中工作?我沒有正確設置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;
}
任何幫助,將不勝感激。
討論我增加了CURLOPT_FOLLOWLOCATION並將其設置爲1L,我敢肯定它進行連接,但現在的程序沒有給予任何輸出。 .. – rcplusplus 2012-07-25 17:57:19
爲了幫助調試你可以設置'CURLOPT_VERBOSE',它會給stderr寫很多調試輸出。 – Giel 2012-07-25 18:01:09
感謝您的提示!現在我知道發生了什麼事。所以CURLOPT_FOLLOWLOCATION完成了它的工作,因爲當第一個鏈接給它一個「302 Moved Temporarily」代碼時,它就進入了新的鏈接。當它執行一個HTTP請求時,它成功使用了HTML代碼200,並獲得了許多似乎是正確的信息。但是由於某種原因它沒有輸出數據......我認爲我的'write_data()'函數是錯誤的... – rcplusplus 2012-07-25 18:07:56