如何使用libCurl

时间:2018-08-19 15:25:32

标签: c++ curl libcurl access-token

我已经在图片网站上注册,我想使用其API从那里提取一些图片。
我从他们的文档中引用了以下内容:“要获得访问权限,您必须向每个请求添加HTTP授权标头”。

当前,我具有API_KEY,但必须通过HTTP Authorization标头发送它,发现与请求类似的内容如下:

  

curl -H“授权:OAuth” http://www.example.com

在CURL命令提示符中使用了先前的命令,但是我想通过libCurl使用同一命令。

此外,我知道设置授权类型的选项,但我仍然不知道如何发送ACCESS_TOKEN:

curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

-

CURL *curl;
CURLcode codeRet;
std::string data;
std::string fullURL = url + keyword;
curl = curl_easy_init();
if (curl) {
    curl_easy_setopt(curl, CURLOPT_URL, fullURL.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    codeRet = curl_easy_perform(curl);
    if (codeRet != CURLE_OK)
        // OutputDebugString(wxString(curl_easy_strerror(codeRet)));
        return "";
    curl_easy_cleanup(curl);
}

如何使用libCurl将访问令牌发送到服务器API?

1 个答案:

答案 0 :(得分:1)

-H命令提示符下与curl选项一起使用的所有内容,都可以使用CURLOPT_HTTPHEADER转换为代码。因此,我建议确保在移至libcurl之前,它可以按预期从命令提示符正常运行。

如果使用访问令牌,则可以使用access_token关键字,即

curl -H "access_token: abcdefghijklmnopqrstuvwxyz" http://example.com

CURL *curl = curl_easy_init();     
struct curl_slist *headers= NULL;
string token = "abcdefghijklmnopqrstuvwxyz"; // your actual token

if(curl) {
  ...
  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
  string token_header = "access_token: " + token; // access_token is keyword    
  headers = curl_slist_append(headers, token_header.c_tr());     
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  ...

  curl_slist_free_all(headers);
}

这将向http://example.com?access_token=abcdefghijklmnopqrstuvwxyz链接发出http请求