[C++] 纯文本查看 复制代码 #include <iostream>
#include <string>
#include <curl/curl.h>
// 回调函数用于处理接收到的数据
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
// 将接收到的数据追加到字符串缓冲区中
((std::string*)userp)->append((char*)contents, size * nmemb);
// 返回接收到的数据总大小
return size * nmemb;
}
// 获取邮件的函数
void GetEmails(const std::string& accessToken) {
CURL* curl;
CURLcode res;
std::string readBuffer;
// 初始化 CURL
curl = curl_easy_init();
if(curl) {
struct curl_slist* headers = nullptr;
// 设置 Authorization 头部,包含 Bearer 令牌
headers = curl_slist_append(headers, ("Authorization: Bearer " + accessToken).c_str());
// 设置 Content-Type 头部,指定为 JSON
headers = curl_slist_append(headers, "Content-Type: application/json");
// 设置请求的 URL
curl_easy_setopt(curl, CURLOPT_URL, "https://graph.microsoft.com/v1.0/me/messages");
// 设置 HTTP 请求头部
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// 设置回调函数,用于处理响应数据
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
// 设置写入数据的目标缓冲区
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
// 执行 HTTP 请求
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
// 如果请求失败,输出错误信息
std::cerr << "curl_easy_perform() 失败: " << curl_easy_strerror(res) << std::endl;
} else {
// 如果请求成功,输出响应数据
std::cout << "响应数据: " << readBuffer << std::endl;
}
// 清理 CURL 资源
curl_easy_cleanup(curl);
// 释放头部列表
curl_slist_free_all(headers);
}
}
int main() {
// 设置 Microsoft Graph API 的访问令牌
std::string accessToken = "YOUR_ACCESS_TOKEN"; // 替换为实际的访问令牌
// 调用函数获取邮件
GetEmails(accessToken);
return 0;
}
|