在调试模式下卷曲CURLE_COULDNT_RESOLVE_HOST

时间:2010-11-27 20:04:56

标签: c++ curl

我使用curl访问指定网址中的文件。我使用VC ++ 2010和curl 7.21.2(我自己编译)和wxWidgets用户界面(除了curl之外都是内置的unicode)。我在发布版本中没有问题但是相同的代码(如下)在调试版本中因同一个网址的CURLE_COULDNT_RESOLVE_HOST错误而失败。

以下是代码:

CURL * pEasyHandle = curl_easy_init();
if(!pEasyHandle) 
    return wxEmptyString;

CURLcode curlcode; 
curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_VERBOSE, 1); // this is in ifdef _DEBUG actually

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_HTTPGET, 1);

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_URL, url.ToStdString()); 

curl_easy_setopt(pEasyHandle, CURLOPT_WRITEFUNCTION, writer);
curl_easy_setopt(pEasyHandle, CURLOPT_TIMEOUT, 10);
curl_easy_setopt(pEasyHandle, CURLOPT_CONNECTTIMEOUT , 10);

wxString fileListString = wxEmptyString;
curl_easy_setopt(pEasyHandle, CURLOPT_WRITEDATA, &fileListString);

curlcode = curl_easy_perform(pEasyHandle); // post away!

if(curlcode == CURLE_OK)
{
          // cannot enter here in debug mode
}
else
{
    m_errorString = curl_easy_strerror(curlcode);
    wxMessageBox(m_errorString);
}

curl_easy_cleanup(pEasyHandle);

2 个答案:

答案 0 :(得分:2)

以下行似乎是问题所在:

curlcode = curl_easy_setopt(pEasyHandle, CURLOPT_URL, url.ToStdString());

如果我的假设是正确的,ToStdString返回一个std :: string而不是一个C字符串。 curl是一个C库,因此它需要char * - s。

你能说出网址的类型吗?

答案 1 :(得分:0)

您可以将url.ToStdString()替换为url.c_str()