有人说 c++ 发 http 请求麻烦,我不太认同,我认为一分钟内能搞定的事情,无论如何也谈不上“麻烦”
为了帮助后来人,方便以后英文不太好,常使用中文搜索的同学找到答案,我单独发到这里
1. VS 新建一个 Cpp console 工程,工程右键 -> Manage nuget packager
2. 搜索 cpprestsdk,并 点击 install
3. 复制以下代码替换 main.cpp ,然后 F5
#include <iostream>
#include <cpprest/http_client.h>
int main()
{
web::http::client::http_client client(U("https://postman-echo.com/get?a=b"));
auto rsp = client.request(web::http::methods::GET).get();
auto body = rsp.extract_string().get();
std::wcout << rsp.status_code() << "\n" << body << std::endl;
}
全程录屏:
SEO Area:
C++ 发 http 请求
Cpp 发 http 请求
怎么用 Cpp 发 http 请求
http 请求 cpp
http 请求 c++
第 1 条附言 · 4 小时 16 分钟前
顺便发一下 Mac 下简单发送 Http 请求的方法 简单的方法有很多,比如 brew install openssl ,然后使用 cpp-httplib 提供一个 vcpkg 的方法: 流程就是
vcpkg install cpprestsdk:x64-osx
来build cpprestsdk生成一个 shell 脚本,直接run 就好
#!/bin/sh
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install x64-osx
rm -rf ./httptest
mkdir httptest
cd httptest
echo '#include <iostream>
#include <cpprest/http_client.h>
int main()
{
web::http::client::http_client client(U("https://postman-echo.com/get?a=b"));
auto rsp = client.request(web::http::methods::GET).get();
auto body = rsp.extract_string().get();
std::cout << rsp.status_code() << "\\n" << body << std::endl;
}' > main.cpp
g++ main.cpp -o main -std=c++17 \
-I../vcpkg/installed/x64-osx/include \
-framework Security\
-framework AppKit\
-L../vcpkg/installed/x64-osx/lib \
-lcpprest\
-lssl\
-lcrypto
./main
36 条回复 • 2021-08-20 17:59:29 +08:00
1 zakokun 5 小时 38 分钟前 2我全程看完,只是觉得承认 CPP 门槛相对更高又不是什么丢人的事情,你这么纠结干啥?那帖子都是默认楼主零基础吧。我假设自己是新人,从你发的这些来看,vs 这东西好几 G,安装要激活码的,我从哪里弄?我是 MacOS 系统 vs for Mac 和你发的界面不一样的,相对于脚本语言就是有门槛啊。 顺便说,看到 web::http::client::http_client clien 这么长一串我就笑出来了 |
3 nannanziyu 5 小时 31 分钟前@zakokun |
4 xarthur 5 小时 24 分钟前 8从原帖看到这个帖子,觉得是楼主着急了…… |
6 nannanziyu 4 小时 58 分钟前@xarthur |
7 singerll 4 小时 27 分钟前 via Android非程序员,会写几行 python 和 shell 。我看了只能说,确实比 python 和 shell 门槛高。隔壁销售不懂啥是内存,啥是接口,也会写两行 python,但我觉得写不了 cpp |
8 litmxs 4 小时 16 分钟前 via Android上个帖子别人说了句 C++门槛高,就被楼主喷无知 |
9 darknoll 4 小时 12 分钟前楼主应该是个老 windows 程序员吧,咋说呢,c++这玩意确实跟不上时代了,唯一的优势是运行效率高,但是现在都是 web 了,速度瓶颈在于带宽。可能很多老 c++开发人员确实都比较自负,认为自己能力远超常人,但是我反而觉得我司 c++大佬很多新技术都不懂,眼界太窄了。还是得紧跟时代啊。 |
11 nannanziyu 4 小时 7 分钟前@darknoll 语言是工具,每种工具都有适合自己的地方 |
12 wangchengwu 4 小时 6 分钟前cpprestsdk 这东西是微软弄得,嵌入式移植不动。 |
15 nannanziyu 3 小时 56 分钟前 1@darknoll |
16 nannanziyu 3 小时 53 分钟前@darknoll |
17 xylxAdai 3 小时 47 分钟前 1怎么说呢,对一个新手来说,确实难,我用 c++四五年了,但是还是觉得相比于其他语言来说,就算拿不算简单的 java 来说,c++的包引入都复杂了一个级别。 |
18 abersheeran 3 小时 33 分钟前作为一个只在学校里写过 C++ 的人来说句我的感受,C++对于我来说最大的困难是没有一个好用的包管理器以及简单易用的编译工具。所以我在入门阶段就直接放弃了,现在大抵是只能在 VS 、DevC 里写点代码来解决 leetcode 上的题目这个水平。 我说一下我觉得好用的包管理器,比如 npm 、cargo 这种。简单易用的编译工具,go build 、cargo build 。 包管理器不是有就行的,比如 Python 那个 pip 我就觉得相当一般,最近他们整了个新活,无限尝试下载 package 搞得我 CD 都废了。编译工具也不是能用就行的,cargo 和 make 一比就知道谁优谁劣了。 |
19 ZField 3 小时 31 分钟前为啥不直接用 curl 发送请求? |
21 pocarisweat 3 小时 26 分钟前其实要是今天写一个新的 Cpp 库,直接面向 C++20 就行。因为那些用旧版编译器的肯定已经有自己接入的那堆库了。然后接入到各种 Cpp 包管理器里。 |
22 mrsecond 2 小时 32 分钟前单纯提问,(本人在校软工研究生)。我想问下楼主学 Cpp 还有前途嘛,感觉好多人都在唱衰 Cpp,本人对 Go 和 Cpp 都挺感兴趣的,Cpp 和 Qt 学的稍微深入一点。有点担心到时候 Cpp 的工作岗位越来越少 |
23 nannanziyu 1 小时 36 分钟前 1@mrsecond 其实游戏后端和交易平台撮合引擎都是用 CPP,但是刚毕业肯定做不了,不考虑;游戏客户端也可以排除; AI 也排除 所以个人意见,仅供参考哈 |
24 0o0o0o0 1 小时 30 分钟前1.语法比较复杂,即时复制粘贴,也是需要读懂和使用的,否则也没有意义。 其次是“麻烦”不等于“不会”。 就像大数乘法,c++和其他语言都可以实现,但是用 python 就是更方便。 就像洗碗麻烦吗,对于有些人来说麻烦,对于有些人来说不麻烦,麻烦的就去使用洗碗机,或者忍着麻烦去洗碗,觉得不麻烦就开开心心洗碗。 最后麻烦不是贬义,只是每种语言所擅长的事情不同。 就像用 c++去开发 web,可以吗,可以,麻烦吗,对于大部分人来说就是很麻烦呀。 |
25 nicevar 1 小时 19 分钟前有些人就是这样,喜欢胡搅蛮缠,连装个 vs 都要怪到 c++头上,这是什么逻辑,nodejs 那套玩得不比 c++还麻烦? |
26 nannanziyu 1 小时 11 分钟前@nicevar 是呀,也是无语 |
27 yolee599 57 分钟前很多人觉得现在流行的是 web,但是那玩意文件又大又吃配置,运行还不稳定。我是不喜欢 |
28 nmap 52 分钟前UWP 是什么? |
31 leitwolf 49 分钟前 via Android我光看那些符号都头大了 |
32 lakehylia 47 分钟前相对于 http,我觉得 c++的二进制管理相当的烦。尤其是 stl,版本对不上就编译不通过,编译通过了,跑起来就各种崩。。。烦 |