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

dro*_*rov 1 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");
Run Code Online (Sandbox Code Playgroud)

基本上,如果我直接用“example.org”替换函数中的 url 参数,它就可以工作。所以我真的不知道该怎么办。

预先非常感谢。:)

dro*_*rov 5

在这里找到解决方案:URL变量传递到Curl中

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