как это может быть, что в windows visual studio 2013 curl_easy_perform возвращает cannot_resolve хост, но тот же самый код в том же компьютере отлично работает в виртуальной машине ubuntu?
CURL *curl;
curl_global_init(CURL_GLOBAL_SSL);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_URL, "https://myhost.com/api/login/");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
// calculate request header
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"username\":\"name\", \"password\":\"test\"}" );
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); // set callback
curl_easy_perform(curl); // perform request
curl_easy_cleanup(curl); // cleanup request
return 0;
подробный вывод программы следующий
> * STATE: INIT => CONNECT handle 0x907ef0; line 1034 (connection #-5000)
> * Added connection 0. The cache now contains 1 members
> * STATE: CONNECT => WAITRESOLVE handle 0x907ef0; line 1071 (connection #0)
> * Could not resolve host: myhost.com
> * Closing connection 0
> * The cache now contains 0 members
> * Expire cleared
поэтому я выясню решение. проблема была в curl_global_init (CURL_GLOBAL_SSL); вызов функции. когда я изменяю его на curl_global_init (CURL_GLOBAL_ALL); программа запускает работу, как ожидалось.
myhost.com
в вашем хост-файле на компьютере с Ubuntu? Также убедитесь, что машина Windows может разрешить ваш хост за пределами curl (то есть с помощью ping)