Раньше я только коснулся libcurl, но теперь мне нужно зайти на страницу и войти в систему. Это означает, что я должен заполнить форму с именем пользователя, паролем
Я искал пример уже несколько дней, но ничего не работает, никакие объяснения не дают мне понять, что я должен делать.
В этом примере они отправляют форму, но что тогда? Как мне получить возвращенную информацию?
http://curl.haxx.se/libcurl/c/http-post.html
По следующей ссылке я нашел кого-то, у кого была похожая проблема. Не знаю, решит ли он свои проблемы. Я украл CURLOPT_FOLLOWLOCATION-строку, но не смог добраться до обновленной страницы. (Я предполагаю, что получу информацию, которую получу, если сделаю это в браузере, но нет). На этой странице они также заговорили об использовании cookie-файлов для завитков. Я думал, что куки были использованы для запоминания имен пользователей для упрощения входа в систему.
Как использовать libcurl для входа на защищенный веб-сайт и получить html за логином
Самая простая попытка, которую я мог придумать, состояла в том, чтобы просто перейти на эту страницу и отправить автомобиль = Автомобиль на странице ниже. Когда я делаю это в браузере, страница возвращает «Вход был получен как:
vehicle = Car ", но я не получаю его в моей c / c ++ - программе, использующей curl.
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_checkbox
Ниже приведен фрагмент кода, который я использую:
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
printf("Open %s\n", name.c_str());
curl_easy_setopt(curl, CURLOPT_URL, "http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_checkbox");
curl_easy_perform(curl);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "vehicle=Car");
curl_easy_setopt(curl, CURLOPT_URL, name.c_str());
curl_easy_perform(curl);
int i = 0;
do{
if (i)
{
curl_easy_cleanup(curl);
curl_easy_setopt(curl, CURLOPT_URL, name.c_str());
}
printf("Try number %d \n", ++i);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &localStore);
res = curl_easy_perform(curl);
} while(res);
curl_easy_cleanup(curl);