2016-09-25 144 views
4

我在libcurl中遇到了一個奇怪的問題 - 它拒絕解析特定的URL,並返回錯誤消息「無法解析主機名」。解決其他主機沒有問題。我懷疑原因是失敗的URL返回302重定向,但我已經設置了適當的選項來跟蹤它。curl_easy_perform:無法解析主機名

相關網址:http://servermods.cursecdn.com/files/922/48/worldedit-bukkit-6.1.3.jar

相關的代碼:

CURL* curl; 
FILE* data; 
std::string url; 

// ... 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 
curl_easy_setopt(curl, CURLOPT_FILE, data); 
curl_easy_setopt(curl, CURLOPT_URL, url); 

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); 
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); 

CURLcode res = curl_easy_perform(curl); 
+2

我們可以編譯一個完整的程序會很有幫助。 –

回答

8

libcurl預計,CURLOPT_URL一個char*。我的代碼通過了string。這實質上會導致庫錯誤地解釋字符串並且無法解析主機。

+0

編譯器肯定會對此提出巨大的警告? –

+0

不,'curl_easy_setopt'需要一個未指定類型的變量,所以編譯器顯然不知道比盲目接受它更好。 – caseif