如果URL作为参数提供,则C ++ curl无法解析主机

时间:2016-09-10 11:10:21

标签: c++ curl libcurl

我正在构建一个需要向API请求的小应用程序。

我使用libcurl,如果我在函数中直接提供完整的URL,那么效果很好,但是如果我在一个以URL作为参数的函数内执行它,它会立即失败并出现错误CURLE_COULDNT_RESOLVE_HOST(6)。

所以我知道这不是DNS问题,因为如果我直接提供URL,我可以解决它。

这是我目前的职能。

std::string winget(std::string url)
{

    CURL *curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }
        return readBuffer;
}

//and I call it like this :

winget("example.org");

基本上如果我直接用“example.org”替换函数中的url param,它就可以了。所以我真的不知道如何处理它。

提前多多感谢。 :)

1 个答案:

答案 0 :(得分:3)

在此处找到解决方案:URL Variable passing into Curl

基本上,您需要将URL提供为以null结尾的字符串。因此,如果参数是字符串,请使用.c_str()或从该字符串中获取char*