cpp-httplib基本使用
时间: 2023-03-27 12:02:24 浏览: 761
cpp-httplib是一个C++编写的HTTP客户端/服务器库,可以用于快速开发HTTP客户端和服务器。它提供了简单易用的API,支持GET、POST、PUT、DELETE等HTTP方法,同时也支持SSL加密连接。使用cpp-httplib可以轻松地实现HTTP通信功能。
相关问题
cpp实现从cpp-httplib server获取本地文件
在C++中,你可以使用cpp-httplib库来作为HTTP服务器,然后通过发送GET请求从这个服务器下载本地文件。以下是基本步骤:
1. 首先,确保你已经安装了cpp-httplib库。如果没有,可以从GitHub上克隆并添加到项目中:https://github.com/yhirose/cpp-httplib
2. 引入必要的头文件:
```cpp
#include <cpp-httplib.h>
```
3. 定义一个函数来处理HTTP GET请求,该函数将检查请求的目标是否是你想要提供下载的本地文件路径:
```cpp
void download_file(const std::string& filename) {
htp::server my_server(8080); // 设置服务器监听的端口
auto file_path = "path/to/your/local/file.txt"; // 替换为你实际的文件路径
if (httplib::OK == my_server.get("/download", [&](const htp::request& r) -> htp::response {
if (r.uri.path() == "/download" && r.method == htp::Method::GET) {
std::ifstream in(file_path);
if (!in) {
return htp::response(404, "File not found");
}
htp::header headers;
headers["Content-Type"] = "text/plain";
headers["Content-Disposition"] = "attachment; filename=" + filename;
return htp::response(200, "OK", in, headers);
}
return htp::response(httplib::Status::NotImplemented, "Not implemented");
})) {
std::cout << "Server running on port 8080." << std::endl;
} else {
std::cerr << "Failed to start the server: " << my_server.status_message() << std::endl;
}
}
```
4. 启动服务器:
```cpp
int main() {
download_file("file_to_download.txt"); // 调用下载文件函数,并指定文件名
try {
my_server.run();
} catch (std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
c++ httplib 客户端使用demo
在C++中,`httplib`是一个轻量级HTTP库,它提供了一种简单的方式来创建HTTP客户端。以下是使用`httplib`创建一个基本的GET请求示例:
```cpp
#include <httplib.h>
int main() {
try {
// 创建一个httplib::Client实例,设置URL
auto http = htlplib::Client("example.com", 80);
// 打开一个连接并发送GET请求
int response_code = http.Get("/");
if (response_code == 200) {
// 如果状态码是200(成功),读取响应内容
std::string response;
http.GetResponseBody(response);
std::cout << "Response: " << response << "\n";
} else {
std::cerr << "Error: HTTP status code " << response_code << "\n";
}
// 关闭连接
http.Close();
} catch (const htlplib::Exception& e) {
std::cerr << "Error: " << e.what() << "\n";
}
return 0;
}
```
在这个例子中,我们首先创建了一个`httplib::Client`对象,然后调用`Get()`函数发起一个GET请求到指定的路径。如果请求成功,我们会获取响应体,并打印出来。最后别忘了关闭连接以释放资源。
阅读全文