curl_slist и передают опцией CURLOPT_HTTPHEADER.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpHtRqH 651 of 696 menu
◀ ▶

Заголовки запроса в C++

Заголовки запроса - пары имя и значение, которые идут до тела.

В libcurl их собирают в связный список curl_slist и передают опцией CURLOPT_HTTPHEADER. После обмена список освобождают через curl_slist_free_all. Зададим тип принимаемого текста и выведем тело ответа:

#include <iostream> #include <string> #include <curl/curl.h> size_t writeBody( char* ptr, size_t size, size_t nmemb, void* userdata ) { auto* body = static_cast<std::string*>(userdata); body->append(ptr, size * nmemb); return size * nmemb; } int main() { curl_global_init(CURL_GLOBAL_DEFAULT); CURL* curl = curl_easy_init(); std::string body; curl_slist* headers = nullptr; headers = curl_slist_append( headers, "Accept: text/plain" ); curl_easy_setopt( curl, CURLOPT_URL, "https://example.com/" ); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeBody); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &body); CURLcode res = curl_easy_perform(curl); if (res == CURLE_OK) { std::cout << body << "\n"; } curl_slist_free_all(headers); curl_easy_cleanup(curl); curl_global_cleanup(); return res == CURLE_OK ? 0 : 1; }

Собственные имена вроде "X-Trace" тоже уходят на сервер. Их часто используют для меток трассировки или версии клиента:

#include <iostream> #include <string> #include <curl/curl.h> size_t writeBody( char* ptr, size_t size, size_t nmemb, void* userdata ) { auto* body = static_cast<std::string*>(userdata); body->append(ptr, size * nmemb); return size * nmemb; } int main() { curl_global_init(CURL_GLOBAL_DEFAULT); CURL* curl = curl_easy_init(); std::string body; curl_slist* headers = nullptr; headers = curl_slist_append( headers, "X-Trace: alpha-7" ); curl_easy_setopt( curl, CURLOPT_URL, "https://example.com/" ); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeBody); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &body); CURLcode res = curl_easy_perform(curl); if (res == CURLE_OK) { std::cout << body << "\n"; } curl_slist_free_all(headers); curl_easy_cleanup(curl); curl_global_cleanup(); return res == CURLE_OK ? 0 : 1; }

Отправьте чтение на "https://example.com/" с полем "Accept-Language" равным "ru". Выведите тело ответа.

Выведите тело ответа для "https://example.com/", если в запрос добавлено поле "X-Client" со значением "desk".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить