2016-09-25 108 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