我正在构建一个需要向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,它就可以了。所以我真的不知道如何处理它。
提前多多感谢。 :)
答案 0 :(得分:3)
在此处找到解决方案:URL Variable passing into Curl
基本上,您需要将URL提供为以null结尾的字符串。因此,如果参数是字符串,请使用.c_str()
或从该字符串中获取char*
。