C++ “;无法解析主机”;使用c++;
代码片段如下所示:C++ “;无法解析主机”;使用c++;,c++,curl,libcurl,C++,Curl,Libcurl,代码片段如下所示: const int BUFFERSIZE = 50*1024; char lLoadedData[BUFFERSIZE]; memset(lLoadedData, 0, sizeof(lLoadedData)); mstrURL = "http://www.google.com"; CURL* lCurlHandle = curl_easy_init(); if (lCurlHandle) { //url if ((error_code = curl_eas
const int BUFFERSIZE = 50*1024;
char lLoadedData[BUFFERSIZE];
memset(lLoadedData, 0, sizeof(lLoadedData));
mstrURL = "http://www.google.com";
CURL* lCurlHandle = curl_easy_init();
if (lCurlHandle)
{
//url
if ((error_code = curl_easy_setopt(lCurlHandle, CURLOPT_URL, mstrURL)) != CURLE_OK)
return;
if((error_code = curl_easy_setopt(lCurlHandle, CURLOPT_WRITEDATA, (void *)lLoadedData)) != CURLE_OK)
return;
error_code = curl_easy_perform(lCurlHandle);
if (error_code == CURLE_OK)
{
...
}
}
执行curl\u easy\u perform()后的错误代码是CURLE\u couldn\u RESOLVE\u HOST
我已将DNS服务器更改为8.8.8.8和4.4.4.4,但错误代码仍然没有更改
有人知道如何解决这个问题吗?谢谢
环境:Windows server 2008与2010
===================更新=====================
似乎参数是错误的。应该是:
如果((error\u code=curl\u easy\u setopt(lCurlHandle,CURLOPT\u URL,mstrURL.c\u str())!=CURLE\u OK)很可能您正在使用一个忘记告诉libcurl的代理
您可以打开CURLOPT\u VERBOSE从libcurl获取更多关于它的功能和发生的情况的信息。我也有类似的错误。当我通过启用verbose选项来检查日志消息时,curl会在我以字符串形式传递url时尝试重新生成url。重建url过程生成了无效的url。 只有当我将url直接放在curl_easy_setopt方法上时,它才起作用,例如:curl_easy_setopt(lCurlHandle,CURLOPT_url,“”)。如果我将url放在变量中并将其传递给参数,则curl将不起作用。 但后来,我查阅了CURLOPT_URL的手册。url参数应该是char指针。因此,我将字符串url转换为字符指针
因此,我的建议是将(可能)字符串mstrURL转换为char指针,让我们看看它是否有效。如果您使用std::string,您可以使用c_str()将其转换为char指针。我对不得不在消费者操作系统上开发表示哀悼。我无法回答您的问题,但我可以告诉您,4.4.4.4不太可能是名称服务器。您可能是指8.8.4.4。谢谢您的评论。但是它在8.8.4.4上也失败了是的,因此我的“我不能回答你的问题”。您可能希望使用一个平台,该平台允许您以结构化方式分析问题。在unix上,我会对它进行跟踪,找出到底是什么地方出了问题,然后使用调试器逐步查找错误的一般位置。在Windows上,我会询问Clippy,然后致电客户支持。