cpp 有什么简洁的方案可以时间 http 请求吗?
source link: https://www.v2ex.com/t/796751
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
网上找了不少例子在 VisualStudio2019 里面都不能用 系统是 windows
nannanziyu 11 小时 15 分钟前
A C++11 single-file header-only cross platform HTTP/HTTPS library.
AoEiuV020 11 小时 5 分钟前 1
要说有没有办法简单实现 http 请求我是一开始就相信有的,
但楼主的意思应该是已经在网上查找过,并且尝试过不少不可行的方案,
这就是前提了,
是说一个简单的 http 请求都能折腾到新手上来问,
而不是说 c++没有办法实现简单的 http 请求,
并没有什么错误,
nannanziyu 10 小时 58 分钟前
1. 首先 google 关键词 "c++ http library" 第二条结果就是 cpp-httplib
2. 楼主解决问题以及寻找答案的能力差,自己找不到答案,所以来请教,这是没有问题,因为请教也是解决问题的一个方法,至少努力了
但是看到一个错误前提,不花时间思考,条件反射地得出结论,不是解决问题的方法
AoEiuV020 10 小时 43 分钟前 10
我都说了我前提是楼主已经出来问了,你依然觉得你有解决方案而楼主没有就能说明是楼主不行,不是 c++门槛高,
另外我花了几分钟下载试了一下你说的这个库,甚至没有想像中的方便,这东西还依赖 openssl,不开启 CPPHTTPLIB_OPENSSL_SUPPORT 就不支持 https,开启了没有 openssl 就报错,
像我这种能力差的依然不能简单利用起来实现 http 请求,说一句“c++门槛还是这么高” 没毛病吧,
ztcaoll222 10 小时 19 分钟前
ipwx 10 小时 13 分钟前
nannanziyu 9 小时 1 分钟前 7
好,我来把解决“cpp 解决 http 请求”的整个流程列一下,你说说哪个步骤门槛高
1. 要做 http 请求,肯定找一下相关库,所以用 google 搜索 "c++ http library",第二条结果就是 cpp-httplib
2. 进入 cpp-httplib github 主页,花两分钟看下文档,ok,需要 “SSL support is available with CPPHTTPLIB_OPENSSL_SUPPORT. libssl and libcrypto should be linked.”
3. 尝试寻找 windows openssl library,使用 google 搜索 "windows openssl library download",同样第二条结果就是
4. 点击第二条进入 Openssl Binaries 下载主页
页面仔细看一下就知道下哪个。就算不知道在页面里搜索 library,一共三条结果,排除掉第二个 for ICS 的,一共就两个,下载下来
5. 把下载的 lib 和 headers 加入工程,实例代码拷贝一下,F5
你说说这里哪个门槛高?也只有第五步需要有一点点 L l IncludePath 的概念,但是连 IncludePath 也叫门槛吗?
nannanziyu 8 小时 56 分钟前
上面全部尝试过程都是"第一次接触",然后“尝试解决问题”的过程
程序员这个行业,搜索资料,尝试解决问题的能力是很重要的
如果觉得这个都有门槛,我真心觉得需要提升一下自己
AoEiuV020 8 小时 45 分钟前
AoEiuV020 8 小时 43 分钟前
jorneyr 8 小时 35 分钟前
HttpClient("http://localhost:8080/api/rest").success([](const QString &response) {
qDebug().noquote() << response;
}).get();
// [3] POST 请求,使用 param 添加参数,请求的参数使用 Form 格式
HttpClient(url).debug(true).param("name", "卧龙").param("value", 99).success([](const QString &response) {
qDebug().noquote() << response;
}).post();
encro 8 小时 35 分钟前
@nannanziyu
门槛是相对的,
但是 C++门槛高是公认的,也是不会去重点改善的,看过作者原著的人应该都会有这个认识吧。
跨平台多字节处理就会搞死一批人,到 20 还没解决,提案到解决还要好几年吧。
如果 C++门槛低了,就没 Rust,C,GO,Python 一堆语言什么事了吧?
nannanziyu 8 小时 33 分钟前 1
还是说,如果你看完流程,还觉得是门槛的话
如果你是学生:没关系,慢慢提升
如果你工作年限 2 年内:先不要 leetcode 和背题了,尝试找些稍微大的项目,尝试完整实现,在尝试过程中,逐渐提升自己的“搜索资料,尝试解决问题的能力”,这是你的瓶颈
如果你工作年限在 2-3 年内:尝试考公吧,换工作还来得及
如果你工作年限在 3 年外:只能说一句晚安了
nannanziyu 8 小时 16 分钟前 2
语言是工具,每种工具都有适合自己的地方
java 和 node 用 cli 把项目搭起来之前,curl 已经把结果展示在控制台上了
并不能说明 java 和 node 门槛比 curl 高
c++ 门槛不高,可以当 C with class 来写;门槛也可以高,写自己都看不懂的模板
这个简单的实现一个 http 请求的门槛不高
ysc3839 7 小时 46 分钟前
你说不能复制粘贴搞定,理论上配合第三方库是可行的。
前面 @nannanziyu 提到的 cpp-httplib 就已经是 header-only 的库,已经不需要你自己去折腾编译了,主要问题是那个库没有适配各个操作系统原生的 TLS API,而是省事直接用了个外部库,因此多了那几步,本质是看有没有别人帮你封装好,与语言无关。
但如果你想说别的语言都内置 http 库了,C++ 还没内置,所以门槛高,那你的结论是对的,因为 C++ 的标准委员会就是这个风格。但是在这个问题下说这个并没有意义,你只是把大部分 C++ 用户都知道的事实复述了一遍,对解决问题毫无帮助。
wevsty 7 小时 37 分钟前
任何语言都面临怎么使用库的问题,不能说因为默认没有某某库就说这个语言的使用门槛高。
cpp 与其说门槛高,不如说是上限高。
毕竟你可以选择把 cpp 写成简单的 C 代码或者 C with class,也可以适当使用 cpp 的特性写出一些简单易懂的模板。
毕竟没有规则强迫你必须写成精品代码,也不必把模板写成谁也看不懂的样子。
AoEiuV020 7 小时 34 分钟前
”你只是把大部分 C++ 用户都知道的事实复述了一遍,“
然而真有人不知道,还怼我,这就让我不爽了,
另外,”对解决问题毫无帮助。“
我的确不是来解决问题的,让我做的话应该会引用 libcurl, 我并不知道更简单的,所以没有回答问题,
hankleeeeeee 7 小时 33 分钟前
ZXCDFGTYU 7 小时 24 分钟前
nannanziyu 7 小时 24 分钟前 2
你要复制粘贴的方法? OK
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;
}
nannanziyu 7 小时 10 分钟前
因为楼主要简洁的方案
cpprestsdk 的门槛比 cpp-httplib 高的多得多得多,cpprestsdk 的模板代码没有 10 年工作经验看不懂;即使不看源代码只使用,因为 cpprestsdk 基于 pplx,天生异步 task,对于新手来说难度很高
而 cpp-httplib 更适合新手,只要有一点 cpp 基础,就能使用
门槛和简易度是没有关系的
nannanziyu 6 小时 33 分钟前 3
新建工程,内置包管理点一下,复制粘贴 F5,真的算门槛吗?
我自问从头到尾都是好好说话,诚心帮助人,你句句杠字字刺,何苦呢
我也马上快四十了,见过的人里,脾菜比(脾气 /菜)你也算在前五了
AoEiuV020 6 小时 15 分钟前 via Android 1
Hallelu 4 小时 3 分钟前 via iPhone
jdz 3 小时 22 分钟前 via Android
LotusChuan 1 小时 8 分钟前 via iPhone
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK