c++使用libcurl访问百度网站的例子并使用变量接收返回值 并统计请求时间
时间: 2023-12-14 09:35:54 浏览: 159
以下是一个简单的使用libcurl访问百度网站的示例,并使用变量接收返回值并统计请求时间:
```c++
#include <iostream>
#include <string>
#include <curl/curl.h>
#include <chrono>
using namespace std::chrono;
// 回调函数,处理返回的数据
static size_t write_callback(char* ptr, size_t size, size_t nmemb, std::string* data)
{
data->append(ptr, size * nmemb);
return size * nmemb;
}
int main()
{
// 初始化libcurl
CURL* curl = curl_easy_init();
if (!curl)
{
std::cerr << "Failed to initialize libcurl" << std::endl;
return 1;
}
// 设置请求的URL
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
// 创建一个string来保存返回的数据
std::string response;
// 设置回调函数,处理返回的数据
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
// 发送请求并计时
auto start = steady_clock::now();
CURLcode res = curl_easy_perform(curl);
auto end = steady_clock::now();
auto duration = duration_cast<milliseconds>(end - start);
// 检查请求是否成功
if (res != CURLE_OK)
{
std::cerr << "Failed to send request: " << curl_easy_strerror(res) << std::endl;
curl_easy_cleanup(curl);
return 1;
}
// 输出返回的数据和请求时间
std::cout << "Response: " << response << std::endl;
std::cout << "Request time: " << duration.count() << "ms" << std::endl;
// 清理并释放资源
curl_easy_cleanup(curl);
return 0;
}
```
该示例中使用了C++11中的chrono库来计时,使用了CURLcode枚举类型来检查请求是否成功。运行该程序,将输出百度网站返回的HTML代码和请求所花费的时间。
阅读全文