如何使用libcurl和C ++获取身份验证cookie?

时间:2020-05-09 12:44:38

标签: c++ cookies authorization libcurl

我是libcurl的新手。

现在,我需要向网站提出POST请求(curl --location --request POST“网站url”-data-urlencode“ userLogin”-data-urlencode“ userPassword”),并且需要授权在这里使用登录名和密码,并将身份验证cookie放入文件中。

我有一个cookie,但是我觉得这里有些问题。我不知道如何检查我是否被授权以及cookie文件中没有任何错误。

我没有收到任何错误,并且在标题中我得到了“ 200 OK”(不知道那是什么意思)。

我没有得到可变结果中的任何信息(它是空的,可以吗?)。

这是我的代码

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;
}

这是我的饼干

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

0 个答案:

没有答案