Как получить аутентификацию Cook ie с помощью libcurl и c ++? - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в libcurl.

На данный момент мне нужно сделать запрос POST (curl --location --request POST 'url веб-сайта' --data-urlencode "userLogin" --data- urlencode 'userPassword') на веб-сайт, и мне нужно авторизоваться здесь, используя логин и пароль, и получить аутентификационную кухню ie в файл.

У меня есть повар ie, но я чувствую, что что-то не так Вот. Я не знаю, как проверить, авторизован ли я или нет, и не получал ли я ошибок в файле cook ie.

Я не получал никаких ошибок, а в заголовке я получил "200 OK" (не знаю, что это значит).

Я не получил никакой информации в переменной result (он пуст, это нормально?).

Вот мой код

static size_t write_data(void* buffer, size_t size, size_t nmemb, void* param)
{
  std::string& text = *static_cast<std::string*>(param);
  size_t totalsize = size * nmemb;
  text.append(static_cast<char*>(buffer), totalsize);
  return totalsize;
}

int main()
{
  std::string result;
  CURL* curl;
  CURLcode res;

  curl = curl_easy_init();
  if (curl) 
  {
    curl_easy_setopt(curl, CURLOPT_URL, "http://someUrl");

    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "j_username=<login>&j_password=<password>");
    curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "authCookie.txt");

    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

    res = curl_easy_perform(curl);
    if (res != CURLE_OK) {
        std::cerr << "CURL error: " << curl_easy_strerror(res) << std::endl;
    }
    curl_easy_cleanup(curl);
  }
  std::cout << "result: " << result << std::endl;
}

А вот и мой повар ie

<url>   FALSE   /   FALSE   0   JBISESSIONID RNz5X7VWw5rEt4q5ifddghGGDGY5H1zvyNpugcUY6wz!-636659151 
...