c++libcurl设置headers
时间: 2024-02-29 14:55:53 浏览: 20
在 C++ 中使用 libcurl 库发送 HTTP 请求时,可以通过设置请求头信息来携带额外的信息。以下是一个设置请求头的示例:
```c++
#include <curl/curl.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 回调函数,用于处理响应数据
static size_t responseCallback(char* ptr, size_t size, size_t nmemb, void* userdata)
{
string* response = static_cast<string*>(userdata);
response->append(ptr, size * nmemb);
return size * nmemb;
}
int main()
{
// 初始化 libcurl
curl_global_init(CURL_GLOBAL_ALL);
// 创建一个 CURL 对象
CURL* curl = curl_easy_init();
// 设置请求 URL
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api");
// 设置请求头信息
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// 设置回调函数,用于处理响应数据
string response;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, responseCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
// 执行请求
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
cerr << "curl_easy_perform failed: " << curl_easy_strerror(res) << endl;
}
else {
cout << "Response: " << response << endl;
}
// 释放资源
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
curl_global_cleanup();
return 0;
}
```
在上面的示例中,我们使用 `curl_slist_append` 函数来添加请求头信息,然后将其通过 `CURLOPT_HTTPHEADER` 选项设置到 CURL 对象中。在执行请求时,libcurl 将会自动携带这些请求头信息。注意,需要在请求完成后释放请求头资源,可以使用 `curl_slist_free_all` 函数来释放。