C++ 使用 libcurl 发送 HTTP GET 请求并获取响应数据
使用 C++ 的 libcurl 库发送 HTTP GET 请求并获取响应数据
本文将介绍如何使用 C++ 的 libcurl 库发送 HTTP GET 请求到指定的 URL,并获取服务器返回的数据。
代码示例
以下是一个示例代码,使用 C++ 的 libcurl 库来创建 HTTP GET 请求并接收返回的数据:
#include <iostream>
#include <curl/curl.h>
int main()
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl) {
std::string url = 'http://fangke.zstu.edu.cn:6007/swagger';
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
// 设置接收返回数据的回调函数
std::string response;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [](char *ptr, size_t size, size_t nmemb, void *userdata) -> size_t {
std::string *response = (std::string*)userdata;
response->append(ptr, size * nmemb);
return size * nmemb;
});
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
// 执行请求
res = curl_easy_perform(curl);
if (res != CURLE_OK)
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
std::cout << "Response:" << std::endl << response << std::endl;
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
代码解释
在上面的代码中,首先初始化了 libcurl 库,并创建了一个 CURL 对象。然后设置了请求的 URL 和是否跟踪重定向。接着设置了接收返回数据的回调函数,该函数在每次接收到数据时会将其添加到一个 std::string 对象中。最后执行请求,并在请求完成后输出接收到的数据。
注意
需要注意的是,上面的示例代码中并没有对请求过程中可能出现的错误进行处理,实际使用时应该根据需要进行相应的错误处理。
原文地址: https://www.cveoy.top/t/topic/m186 著作权归作者所有。请勿转载和采集!