Почему я получаю CURLE_URL_MALFORMAT при попытке опубликовать http?

Вот код (извлеченный из существующего приложения):

CURL *curl = curl_easy_init();
_ASSERTE(curl);

string url = "http://127.0.0.1:8000/";

char *data = "mode=test";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(curl, CURLOPT_URL, url);
CURLcode res = curl_easy_perform(curl);

bool success = (res == CURLE_OK);

curl_easy_cleanup(curl);

Значение res равно CURLE_URL_MALFORMAT. Этот URL-адрес несовместим с curl?


person Nick Bolton    schedule 01.12.2009    source источник
comment
каков тип m_checkUrl? Вы тестировали встроенный char * ? то есть поставить 127.0.0.1:8000 в третий параметр curl_easy_setopt?   -  person John Weldon    schedule 01.12.2009
comment
этот URL должен был иметь префикс http:   -  person John Weldon    schedule 01.12.2009
comment
Я обновил свой пример кода — я использовал строку вместо char * — ой!   -  person Nick Bolton    schedule 01.12.2009


Ответы (1)


Ах, простая ошибка, мне нужно передать char * curl_easy_setopt, а не string. Чтобы исправить это, я только что использовал .c_str() вот так:

CURL *curl = curl_easy_init();
_ASSERTE(curl);

string url = "http://127.0.0.1:8000/";

char *data = "mode=test";
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
CURLcode res = curl_easy_perform(curl);

bool success = (res == CURLE_OK);

curl_easy_cleanup(curl);
person Nick Bolton    schedule 01.12.2009