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所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ C++标准库 _string04/16
- ♥ C++并发编程 _ 同步并发(Future)05/22
- ♥ STL_priority_queue08/26
- ♥ Zlib记述:一09/17
- ♥ COM组件_303/07
- ♥ STL_slist08/28
 
				
