【问题标题】:curl_easy_perform: Couldn't resolve host namecurl_easy_perform:无法解析主机名
【发布时间】:2016-09-25 03:40:18
【问题描述】:

libcurl 有一点奇怪的问题 - 它拒绝解析特定的 URL,返回错误消息“无法解析主机名”。解决其他主机没有问题。我怀疑原因是失败的 URL 返回了 302 重定向,但我已经为它设置了适当的选项。

相关网址: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);

【问题讨论】:

  • 一个我们可以编译的完整程序会很有帮助。

标签: c++ libcurl


【解决方案1】:

libcurl 期望 char* 对应 CURLOPT_URL。我的代码传递了string。这实质上会导致库误解字符串并无法解析主机。

【讨论】:

  • 编译器肯定对此提出了一些巨大的警告吗?
  • 不,curl_easy_setopt 需要一个未指定类型的 vararg,因此编译器显然不知道如何盲目接受它。
猜你喜欢
  • 2017-03-26
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多