httplib使用
Get
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//#define CPPHTTPLIB_OPENSSL_SUPPORT #include "../../httplib.h" #include <iostream> #include <string> int main() { httplib::Client cli("http://www.helo.cn"); //httplib::SSLClient cli("https://www.halopaper.cn"); std::string tmp = "/ht/intf/getUninstallWan?channel=home&mid=93cc4e87f4330d6c3cf02d97a5e2575e&mid2=b028e4532a4f8e5af47dd247e170699efded76fe2bb9&appver=1.6525.1260.527&modever=1.6525.1065.514"; if (auto res = cli.Get(tmp)) { if (res->status == 200) { std::cout << "get res : " << res->body << std::endl; } else { std::cout << "get err"; } } std::cout << "Hello World!\n"; } |
Post
form-data
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include "../../httplib.h" #include <iostream> #include <string> int main() { httplib::Client cli("http://l.public.test.com"); std::string boundary = "----------------------1122334455667788"; httplib::Headers head; head.emplace("Content-Type", "multipart/form-data; boundary=" + boundary); head.emplace("Accept", "*/*"); std::string multipart_body; multipart_body += "--" + boundary + "\r\n"; multipart_body += "Content-Disposition: form-data; name=\"data\"\r\n"; multipart_body += "\r\n"; multipart_body += "L4bwobzrJNE0zmOKR/jsmktj/+aipAEPJMtnk4QNalCAi6H2Hofw9xSzAGNADdAXUePkahZlJyvO6+1dRWf08/xmfEIln3Dvpf3KJ1j7mgvTPMpTqjUOX2OMEHQbV/KGfLv1SCgAOuVlxFk1Snq0XrJyS0THZJTf4wEsuSQbUkwKfSw4BHCR0DQFcNnTmISqL/jbOYG550wY04+ER+Rd8cEmPdbebi0u3TL4Q+e3RRaMwF/ki9ZqXlKLcsrQR6/xOY6L9SvN3V4="; multipart_body += "\r\n"; multipart_body += "--" + boundary + "--\r\n"; auto res = cli.Post("/pc/winclean/dogSun", head, multipart_body, "multipart/form-data"); if (res && res->status == 200) { std::cout << "post res : " << res->body << std::endl; } else { std::cout << "post err" << std::endl; } return 0; } |
比较
Get
-
参数位置
url末尾(查询字符串或路径)
-
参数长度
- 受
URL长度限制(通常2048字符内)
- 受
-
安全性
- 参数明文暴露在
URL和浏览器历史中
- 参数明文暴露在
-
幂等性
- 幂等(多次请求效果相同)
-
缓存
- 响应可被浏览器主动缓存
|
1 2 3 |
/search?keyword=apple&page=1 /api/users/123 |
Post
- 参数位置
POST请求的参数放在请求体中,其格式由Content-Type请求头决定
- 参数长度
- 理论上无限制
- 安全性
- 参数在
Body中,相对隐蔽
- 参数在
- 幂等性
- 非幂等(多次请求可能产生不同效果)
- 缓存
- 响应默认不会被浏览器缓存
Content-Type
application/x-www-form-urlencoded- 这是表单提交的默认格式
- 参数组织方式与
GET的查询字符串类似(key=value&key=value) - 但放在
Body里
application/json- 这是现代
API最常用的格式,可以传输结构复杂的JSON数据
- 这是现代
multipart/form-data- 主要用于上传文件,支持将文本和文件数据混合传输
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ STL_heap06/15
- ♥ C++14_第二篇06/21
- ♥ C++_指针引用09/19
- ♥ C++_关于Async、Packaged_task、Promise的总结11/13
- ♥ C++编程规范101规则、准则与最佳实践 二01/07
- ♥ 深入理解C++11:C++11新特性解析与应用 一12/21