V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
woshichuanqilz
V2EX  ›  C++

cpp 有什么简洁的方案可以时间 http 请求吗?

  •  
  •   woshichuanqilz · 2021-08-19 13:44:14 +08:00 · 9100 次点击
    这是一个创建于 953 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上找了不少例子在 VisualStudio2019 里面都不能用 系统是 windows

    第 1 条附言  ·  2021-08-26 09:29:52 +08:00
    首先感谢那个提供了解决方案的 na 什么的那个兄弟, 虽然都说他脾气有点差但是我无所谓, 我觉得我是新手, 大佬愿意花时间给我解决问题我只有感激。 我这里说下我解决问题的过程, 下次我也会注意把问题描述的全面一些把我做的努力也说上。

    这个是我当时搜索 google 的结果,

    https://imgtu.com/i/hejBtg

    说实话这些文章写的实在是一般, 然后我也去了 stackoverflow 上找, 要么是 linux 的, 要么很长的文章看不懂。

    因为之前一直用 python, 而且我觉得 http 请求应该是个很常用的功能, cpp 的话不应该设置的过于麻烦, 所以我的思路是我的方向错了, 然后来这里求助。

    我个人的态度感谢 @nannanziyu 那个大佬帮我解决问题, 连方法都详细的说出来了, 我只有感谢, 态度可能不太好很正常的, 叫一个博士给一个大妈解释微积分啥的确实很难保证不着急。 大家的讨论我也认真的看了, 受益匪浅, 还是我的问题我下次把我做的工作也总结出来, 这样才能更好的针对性的解决问题。 谢谢大家的帮助。
    115 条回复    2021-08-23 18:06:20 +08:00
    1  2  
    janus77
        1
    janus77  
       2021-08-19 13:47:20 +08:00
    curl 不行?
    AoEiuV020
        2
    AoEiuV020  
       2021-08-19 14:29:08 +08:00
    c++门槛还是这么高吗,一个 http 请求都很麻烦?
    nannanziyu
        3
    nannanziyu  
       2021-08-19 14:30:42 +08:00   ❤️ 1
    https://github.com/yhirose/cpp-httplib
    A C++11 single-file header-only cross platform HTTP/HTTPS library.
    nannanziyu
        4
    nannanziyu  
       2021-08-19 14:32:43 +08:00
    @AoEiuV020
    > c++门槛还是这么高吗,一个 http 请求都很麻烦?
    请先确认前提,再引申结果,从错误前提引申的结果,只能证明自己无知
    AoEiuV020
        5
    AoEiuV020  
       2021-08-19 14:40:04 +08:00   ❤️ 1
    @nannanziyu 不至于,
    要说有没有办法简单实现 http 请求我是一开始就相信有的,
    但楼主的意思应该是已经在网上查找过,并且尝试过不少不可行的方案,

    这就是前提了,
    是说一个简单的 http 请求都能折腾到新手上来问,
    而不是说 c++没有办法实现简单的 http 请求,
    并没有什么错误,
    nannanziyu
        6
    nannanziyu  
       2021-08-19 14:47:08 +08:00
    @AoEiuV020
    1. 首先 google 关键词 "c++ http library" 第二条结果就是 cpp-httplib
    2. 楼主解决问题以及寻找答案的能力差,自己找不到答案,所以来请教,这是没有问题,因为请教也是解决问题的一个方法,至少努力了
    但是看到一个错误前提,不花时间思考,条件反射地得出结论,不是解决问题的方法
    AoEiuV020
        7
    AoEiuV020  
       2021-08-19 15:02:47 +08:00   ❤️ 18
    @nannanziyu 感觉你这是习惯性偷换概念了,
    我都说了我前提是楼主已经出来问了,你依然觉得你有解决方案而楼主没有就能说明是楼主不行,不是 c++门槛高,
    另外我花了几分钟下载试了一下你说的这个库,甚至没有想像中的方便,这东西还依赖 openssl,不开启 CPPHTTPLIB_OPENSSL_SUPPORT 就不支持 https,开启了没有 openssl 就报错,
    像我这种能力差的依然不能简单利用起来实现 http 请求,说一句“c++门槛还是这么高” 没毛病吧,
    shawnsh
        8
    shawnsh  
       2021-08-19 15:08:52 +08:00 via Android
    确实没有 modern cpp 风格的好用的 http 库
    ztcaoll222
        9
    ztcaoll222  
       2021-08-19 15:26:21 +08:00
    用 qt
    ipwx
        10
    ipwx  
       2021-08-19 15:32:36 +08:00   ❤️ 1
    @AoEiuV020 你说的很对,C++ 的库安装,在 VS 下就是忒麻烦。

    所以我用 linux + cmake + conan.io 。这真的无痛,什么 openssl 、cpp-httplib 、libcurl 都是一键安装,直接运行
    wutiantong
        11
    wutiantong  
       2021-08-19 15:45:02 +08:00
    @ipwx vcpkg 不香吗?
    jpacg
        12
    jpacg  
       2021-08-19 15:46:07 +08:00
    c/c++用别人的轮子都麻烦,特别是在 Windows 下。
    Otho
        13
    Otho  
       2021-08-19 15:56:36 +08:00
    vcpkg + cpprest Qt 的也不是很好用。
    nannanziyu
        14
    nannanziyu  
       2021-08-19 16:44:12 +08:00   ❤️ 8
    @AoEiuV020
    好,我来把解决“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 也叫门槛吗?
    araraloren
        15
    araraloren  
       2021-08-19 16:47:10 +08:00
    你说的网上是 CSDN 吗???????
    nannanziyu
        16
    nannanziyu  
       2021-08-19 16:49:48 +08:00   ❤️ 2
    说实话,我之前都是用 cpprestsdk 和 QT 的,因为楼主要“简单方案”,所以今天是第一次接触 cpp-httplib
    上面全部尝试过程都是"第一次接触",然后“尝试解决问题”的过程
    程序员这个行业,搜索资料,尝试解决问题的能力是很重要的
    如果觉得这个都有门槛,我真心觉得需要提升一下自己
    bthulu
        17
    bthulu  
       2021-08-19 16:59:29 +08:00
    可以安装 nodejs, c++动态生成 http 的 js 代码, 调用 cmd 脚本执行, 再读取控制台返回数据流即可
    AoEiuV020
        18
    AoEiuV020  
       2021-08-19 17:00:03 +08:00
    @nannanziyu 一个简单的 http 请求,甚至不能复制粘贴运行直接搞定,还要谷歌搜索两次,还要看文档,还要下载合适的库,还要正确的引用库,这就是门槛,
    AoEiuV020
        19
    AoEiuV020  
       2021-08-19 17:02:17 +08:00
    @AoEiuV020 #18 这个流程已经可以用于“实现任何功能”了,然而仅仅是一个“简单的 http 请求”就需要这么麻烦的操作,你的门槛是被踩碎了吧,巨人,
    nmap
        20
    nmap  
       2021-08-19 17:06:20 +08:00   ❤️ 1
    这种问题自己 google 两分钟就搞定的事,还拿来问,还引来大佬们的骂架。。。
    sanyuedev
        21
    sanyuedev  
       2021-08-19 17:08:46 +08:00
    Java 开发 弱弱的问一下 C++ 用 http 是不是没有库的话要自己解析 socket ..
    jorneyr
        22
    jorneyr  
       2021-08-19 17:10:28 +08:00
    封装了 Qt 的 Http 请求,调用方式如下,参考 http://qtdebug.com/qtbook-network-http-httpclient/

    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
        23
    encro  
       2021-08-19 17:10:33 +08:00
    @AoEiuV020
    @nannanziyu

    门槛是相对的,

    但是 C++门槛高是公认的,也是不会去重点改善的,看过作者原著的人应该都会有这个认识吧。

    跨平台多字节处理就会搞死一批人,到 20 还没解决,提案到解决还要好几年吧。

    如果 C++门槛低了,就没 Rust,C,GO,Python 一堆语言什么事了吧?
    nannanziyu
        24
    nannanziyu  
       2021-08-19 17:12:40 +08:00   ❤️ 2
    @AoEiuV020
    还是说,如果你看完流程,还觉得是门槛的话
    如果你是学生:没关系,慢慢提升
    如果你工作年限 2 年内:先不要 leetcode 和背题了,尝试找些稍微大的项目,尝试完整实现,在尝试过程中,逐渐提升自己的“搜索资料,尝试解决问题的能力”,这是你的瓶颈
    如果你工作年限在 2-3 年内:尝试考公吧,换工作还来得及
    如果你工作年限在 3 年外:只能说一句晚安了
    lucays
        25
    lucays  
       2021-08-19 17:17:31 +08:00
    如果这么一个请求都要三年经验,还不算门槛么?
    Rheinmetal
        26
    Rheinmetal  
       2021-08-19 17:21:12 +08:00
    @nannanziyu
    有这个流程 java 和 node 已经用脚手架把项目搭起来了
    天下底层开发者苦 cpp 久矣
    LotusChuan
        27
    LotusChuan  
       2021-08-19 17:29:00 +08:00   ❤️ 2
    这是把自己的能力高低给当最低标准了吗。还是主要目的是进来给别人规划人生。
    nannanziyu
        28
    nannanziyu  
       2021-08-19 17:29:37 +08:00   ❤️ 2
    @Rheinmetal
    语言是工具,每种工具都有适合自己的地方
    java 和 node 用 cli 把项目搭起来之前,curl 已经把结果展示在控制台上了
    并不能说明 java 和 node 门槛比 curl 高
    c++ 门槛不高,可以当 C with class 来写;门槛也可以高,写自己都看不懂的模板
    这个简单的实现一个 http 请求的门槛不高
    bfdh
        29
    bfdh  
       2021-08-19 17:36:20 +08:00   ❤️ 1
    curl --libcurl 甚至能帮你把 demo 写了。
    benzalus
        30
    benzalus  
       2021-08-19 17:41:29 +08:00
    主要是门槛的一个定义问题。对我来说,门槛大概是开箱即用的程度。像 python 3 句话搞定的,c++和这些比起来门槛就相对较高了
    怎么搞的跟辩论赛似的
    ysc3839
        31
    ysc3839  
       2021-08-19 17:59:48 +08:00
    @AoEiuV020 #18
    你说不能复制粘贴搞定,理论上配合第三方库是可行的。
    前面 @nannanziyu 提到的 cpp-httplib 就已经是 header-only 的库,已经不需要你自己去折腾编译了,主要问题是那个库没有适配各个操作系统原生的 TLS API,而是省事直接用了个外部库,因此多了那几步,本质是看有没有别人帮你封装好,与语言无关。
    但如果你想说别的语言都内置 http 库了,C++ 还没内置,所以门槛高,那你的结论是对的,因为 C++ 的标准委员会就是这个风格。但是在这个问题下说这个并没有意义,你只是把大部分 C++ 用户都知道的事实复述了一遍,对解决问题毫无帮助。
    wevsty
        32
    wevsty  
       2021-08-19 18:08:37 +08:00
    首先,我觉得理解 include 、link 、lib 是 c/cpp 的基本功,这不需要几年的工作经验来学习,也完全不是什么高门槛。
    任何语言都面临怎么使用库的问题,不能说因为默认没有某某库就说这个语言的使用门槛高。

    cpp 与其说门槛高,不如说是上限高。
    毕竟你可以选择把 cpp 写成简单的 C 代码或者 C with class,也可以适当使用 cpp 的特性写出一些简单易懂的模板。
    毕竟没有规则强迫你必须写成精品代码,也不必把模板写成谁也看不懂的样子。
    AoEiuV020
        33
    AoEiuV020  
       2021-08-19 18:11:55 +08:00
    @ysc3839 你这个说的没错,
    ”你只是把大部分 C++ 用户都知道的事实复述了一遍,“
    然而真有人不知道,还怼我,这就让我不爽了,

    另外,”对解决问题毫无帮助。“
    我的确不是来解决问题的,让我做的话应该会引用 libcurl, 我并不知道更简单的,所以没有回答问题,
    hankleeeeeee
        34
    hankleeeeeee  
       2021-08-19 18:12:23 +08:00
    1
    www5070504
        35
    www5070504  
       2021-08-19 18:18:58 +08:00   ❤️ 1
    @AoEiuV020 跟他们抬杠就已经落下风了 还是不理就好了
    ZXCDFGTYU
        36
    ZXCDFGTYU  
       2021-08-19 18:21:21 +08:00
    这不就是个 HTTP 服务端和客户端的 C++实现的问题么。。这两个问题随便哪个百度一下得到答案的所需时间成本超过 15 分钟?不明白这吵来吵去 30 多层楼的意义。。
    nannanziyu
        37
    nannanziyu  
       2021-08-19 18:21:31 +08:00   ❤️ 2
    @AoEiuV020
    你要复制粘贴的方法? 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
        38
    nannanziyu  
       2021-08-19 18:30:51 +08:00   ❤️ 2
    @AoEiuV020
    全部过程录屏
    l00t
        39
    l00t  
       2021-08-19 18:34:07 +08:00
    @ipwx conan 本身配置就挺麻烦的啊,cmake 也是得自己写,距离一键还远。
    OneMan
        40
    OneMan  
       2021-08-19 18:34:29 +08:00
    c++确实门槛高,搞个什么 http,ssl 最烦了
    casioyan
        41
    casioyan  
       2021-08-19 18:35:21 +08:00   ❤️ 2
    @nannanziyu 如果这是一个公司内部技术讨论群,我觉得你这么说无可厚非,在论坛上只会让人觉得恶臭。
    nannanziyu
        42
    nannanziyu  
       2021-08-19 18:36:01 +08:00
    为什么一开始不提供 cpprestsdk 的方法
    因为楼主要简洁的方案
    cpprestsdk 的门槛比 cpp-httplib 高的多得多得多,cpprestsdk 的模板代码没有 10 年工作经验看不懂;即使不看源代码只使用,因为 cpprestsdk 基于 pplx,天生异步 task,对于新手来说难度很高
    而 cpp-httplib 更适合新手,只要有一点 cpp 基础,就能使用
    门槛和简易度是没有关系的
    hangs
        43
    hangs  
       2021-08-19 18:42:21 +08:00
    楼主不会是参考的某*SDN 的吧。C++虽说有门槛,但我不认为没有开箱可用的 library 就算高门槛,只能算是繁琐吧
    nannanziyu
        44
    nannanziyu  
       2021-08-19 18:47:51 +08:00   ❤️ 5
    lc1450
        45
    lc1450  
       2021-08-19 18:51:57 +08:00
    @nannanziyu #14 进了第一条链接,然后出不来了🐶
    nannanziyu
        46
    nannanziyu  
       2021-08-19 18:53:31 +08:00
    @lc1450 那看下 #37 吧,#37 没有链接,不会监禁人 🐶
    buddyy
        47
    buddyy  
       2021-08-19 18:54:10 +08:00   ❤️ 1
    啊哈哈哈,笑死我了🤣
    AoEiuV020
        48
    AoEiuV020  
       2021-08-19 19:05:43 +08:00 via Android
    @nannanziyu 自信一点,求你了,不要以为你能跨过的都不是门槛,你没有那么 low,
    br00k
        49
    br00k  
       2021-08-19 19:06:57 +08:00
    感觉对比其它语言来说还是比较麻烦的,特别跨平台的时候感觉多了很多坑。
    😂习惯了包管理,添加依赖以后就可以随便写了。
    nannanziyu
        50
    nannanziyu  
       2021-08-19 19:12:57 +08:00   ❤️ 3
    @AoEiuV020
    新建工程,内置包管理点一下,复制粘贴 F5,真的算门槛吗?
    我自问从头到尾都是好好说话,诚心帮助人,你句句杠字字刺,何苦呢
    我也马上快四十了,见过的人里,脾菜比(脾气 /菜)你也算在前五了
    nannanziyu
        51
    nannanziyu  
       2021-08-19 19:17:22 +08:00   ❤️ 1
    一幅图送你,与君共勉,晚安
    OxOzZ
        52
    OxOzZ  
       2021-08-19 19:21:32 +08:00
    看到快 40,马上就跟某种刻板印象匹配了,这帖子一下子合理了
    AoEiuV020
        53
    AoEiuV020  
       2021-08-19 19:30:04 +08:00 via Android   ❤️ 3
    @nannanziyu 你还是去睡觉吧,你没怎么见过我这样的,可你这样的我倒是在游戏区见过不少,提起魂类游戏就说简单的一匹,无伤就能打赢的 boss 有什么难的,就是你这种了,
    bestwaytowait
        54
    bestwaytowait  
       2021-08-19 19:34:48 +08:00
    相比于其它语言就是门槛高啊,这话没什么问题。还有 cpp 的包管理,相比其它一些语言的普及广度,使用深度,就是差很多啊,也没什么问题
    zxCoder
        55
    zxCoder  
       2021-08-19 19:36:21 +08:00
    看了半天楼上的讨论,所以 c++粉丝到底是希望门槛高好还是门槛低好啊
    lingxi27
        56
    lingxi27  
       2021-08-19 19:44:09 +08:00
    门槛确实是相对的,对于一个 c++程序员来说楼主的问题还不至于称为门槛
    LANB0
        57
    LANB0  
       2021-08-19 19:53:10 +08:00
    对于需要往各种硬件平台移植各种库的开发者来说,我需要有一个可以按照各硬件平台依赖的包管理
    zmxnv123
        58
    zmxnv123  
       2021-08-19 19:53:52 +08:00
    y1s1,c++相对于 Java, Python 引入库确实麻烦。
    pengtdyd
        59
    pengtdyd  
       2021-08-19 20:01:06 +08:00
    睡觉,睡觉,我一个 java 程序员不掺和 cpp 的讨论
    nicevar
        60
    nicevar  
       2021-08-19 20:16:24 +08:00   ❤️ 1
    @nannanziyu 你跟那种嘴巴厉害解决不了问题的人杠没意思,一个写 c++的,弄个 http 请求都算门槛的话,那门槛是平的了
    zhoujinjing09
        61
    zhoujinjing09  
       2021-08-19 20:28:55 +08:00   ❤️ 1
    yysy 现代语言好像只有 C++标准库做不了这个事情要另外引入包
    darknoll
        62
    darknoll  
       2021-08-19 20:45:05 +08:00
    c++这玩意,我司用了十年都转其他语言了
    Hallelu
        63
    Hallelu  
       2021-08-19 21:42:58 +08:00 via iPhone
    http 这块说实话对于稍微有经验的 c++来说,不是啥问题,随便在搜个库,编译配置依赖头文件链接就能用了,如果是 go,python 转过来要使用相对来说比 c++转到 go,python 使用 http 门槛高多了,毕竟人家就一句 http.Get()就完事了 :)没办法 这块是硬伤
    darer
        64
    darer  
       2021-08-19 21:46:23 +08:00
    @nannanziyu 图不错 有原图吗(
    FACEB00K
        65
    FACEB00K  
       2021-08-19 21:51:01 +08:00
    boost 和 Qt 随便用
    iyear
        66
    iyear  
       2021-08-19 22:13:36 +08:00
    可以,看吵架还学到了不少,自己还心情愉悦,血赚
    AoEiuV020
        67
    AoEiuV020  
       2021-08-19 22:15:11 +08:00 via Android   ❤️ 1
    @Hallelu 有经验了还谈什么门槛?门槛栏的是入门前的,搜个库,编译配置依赖头文件链接哪一步都不是入门前该会的,
    jdz
        68
    jdz  
       2021-08-19 22:23:51 +08:00 via Android
    brpc
    mrsecond
        69
    mrsecond  
       2021-08-19 22:42:27 +08:00
    还是用 Qt 的 QNetWorkAccessManager 吧,全面而且好用点
    fzcf
        70
    fzcf  
       2021-08-19 23:01:17 +08:00
    到现在难道没发现楼主一句话没说嘛。难道这是引战贴???🤓️
    ufan0
        71
    ufan0  
       2021-08-19 23:17:31 +08:00
    Blue DO 的同学发言一开始就是站在制高点,像极了一般的小 TL 。

    友好交流是基础,而不是上来就是“只能证明自己无知”。
    LotusChuan
        72
    LotusChuan  
       2021-08-20 00:37:47 +08:00 via iPhone
    回头来看这是引战的吗。这需求就算是在 stackoverflow 里面也能直接搜出来,都不用自己提问。就算是不行也好歹把哪不行给提出来吧。
    neoblackcap
        73
    neoblackcap  
       2021-08-20 01:48:49 +08:00
    事实上 Windows 有自带的 Http 请求 API,完全可以什么第三方库都不用,只用 Windows 标准库就可以了。而且 msdn 有很好的文档以及例子。
    当然了,微软的 API 好不好用则是另外一回事。
    liprais
        74
    liprais  
       2021-08-20 02:13:12 +08:00 via iPhone   ❤️ 1
    cpp 还有禁卫军也是少见
    snailya
        75
    snailya  
       2021-08-20 08:27:58 +08:00
    windows 的话,vcpkg,然后想用什么就用什么
    sandman511
        76
    sandman511  
       2021-08-20 09:00:48 +08:00   ❤️ 1
    @nannanziyu
    “请先确认前提,再引申结果,从错误前提引申的结果,只能证明自己无知“
    "但是看到一个错误前提,不花时间思考,条件反射地得出结论,不是解决问题的方法"
    ”如果你工作年限在 2-3 年内:尝试考公吧,换工作还来得及“
    技术上不管对错 你说这些干什么?你太好为人师了

    就跟楼主问:"求抖音上好玩的账号”
    你回答:“少刷抖音 多学习“
    sandman511
        77
    sandman511  
       2021-08-20 09:04:13 +08:00   ❤️ 6
    @nannanziyu
    ”我自问从头到尾都是好好说话,诚心帮助人,你句句杠字字刺,何苦呢“
    你觉得自己在好好说话
    你在#4 说了别人无知 你在#6 说了别人不会思考
    再此之前人家只是说了句 Cpp 门槛高罢了
    您真的快 40 了嘛 你同事也太惨了
    hatsuyuki
        78
    hatsuyuki  
       2021-08-20 09:19:55 +08:00
    TomVista
        79
    TomVista  
       2021-08-20 09:26:02 +08:00   ❤️ 1
    https://v2ex.com/t/796557

    这是昨天的一个帖子,已经进了水深火热,之前是 v 站头版头条,

    再加上这个贴

    快笑死我了

    另外,我在 v 站已经被标记了,帖子权重低,@回复 没有提醒.
    wbbtcool
        80
    wbbtcool  
       2021-08-20 09:38:58 +08:00   ❤️ 1
    想起复联四里面灭霸对钢铁侠的一句话,你不是唯一被知识诅咒的人。知识诅咒,一旦知道某样东西,就很难想象不知道它的时候会是什么样子。
    simo
        81
    simo  
       2021-08-20 10:02:06 +08:00
    本想正经回答,结果重温了小学课本的故事:小马过河
    TSai2019
        82
    TSai2019  
       2021-08-20 10:05:35 +08:00 via Android
    微软不是有 WinHTTP 吗
    ysc3839
        83
    ysc3839  
       2021-08-20 10:19:02 +08:00
    @TSai2019 有是有,但我个人觉得谈不上简洁,前置步骤太多了,发一个简单的请求甚至比 libcurl 需要的代码还多。
    nannanziyu
        84
    nannanziyu  
       2021-08-20 10:19:15 +08:00
    @sandman511
    > 您真的快 40 了嘛 你同事也太惨了
    我同事惨吗?我之前好歹带身边六七个同事年入百万
    https://v2ex.com/t/317307
    nannanziyu
        85
    nannanziyu  
       2021-08-20 10:30:53 +08:00   ❤️ 1
    @sandman511
    > 再此之前人家只是说了句 Cpp 门槛高罢了
    No,他说的是“一个 http 请求都很麻烦”
    而一个 http 请求非常容易。#37 楼的解决方案:建工程,自带包管理点一下,Copy & Paste 就完成了一个 http 请求
    所以这是一个错误的结论
    如果你看到一个人信誓旦旦的说 1+1 = 3,你会不会觉得他不会思考
    Stoulla
        86
    Stoulla  
       2021-08-20 10:56:06 +08:00 via Android
    啊,这个帖子我喜欢,虽然怼的火气有点重,但是都有理有据,甚至还有录屏。感觉回到了当初的互联网。

    希望 l 大别把这帖子扔进水深火热了。真心希望论坛有更多这种有理有据互怼帖
    hst001
        87
    hst001  
       2021-08-20 11:09:25 +08:00 via Android   ❤️ 1
    @nannanziyu 什么叫门槛?入门的人才会遇到门槛,你说的一大堆对老油条来说就几分钟的事情,对新手就是几天,你以为搜索一下,其实新人还要去理解一大堆参数,这个库干什么的,那个库干什么的,然后找 API,很多老油条自然而然的过程,在新手那里就是问题,问题越多对这个新手来说门槛就是越高。一门语言,如果大部分新手入门都会遇到很多问题需要很多时间去熟悉解决,那只能说明这门语言门槛就是高。
    skinny
        88
    skinny  
       2021-08-20 11:13:23 +08:00
    又蠢又懒就别用这么麻烦的语言呗
    qooweds
        89
    qooweds  
       2021-08-20 11:17:15 +08:00
    虽然每个人的背景不同
    但是张口闭口就是菜的是真没礼貌
    wangxn
        90
    wangxn  
       2021-08-20 11:21:38 +08:00
    C++ 的标准库确实太简陋了,基本是数据结构相关的,功能性的库少之又少,文件系统、线程、随机数这些即使有,我觉得也不算易用,基本是完美阐释什么叫过度设计。最典型的是连一点冗余都忍受不了,必须要想方设法地做到最精简。
    假如 Google 能完整开源它们自己的内部库,那对业界是件大好事。现在是有一部分被开源出来了: https://abseil.io/
    这个库我是必用的,补充了很多标准库缺失的东西,而且非常易用。
    nannanziyu
        91
    nannanziyu  
       2021-08-20 11:25:19 +08:00
    @qooweds
    我哪里张口闭口说菜了

    他说“一个 http 请求都很麻烦”
    我 #14 拿证据出来,简单搜索几分钟就能得到结果
    然后他说,“这不算,还要搜索,只有简单复制粘贴才能算不麻烦”
    好的,然后我 #37 #38 给出了只需要复制粘贴的答案
    然后他马上转进,原地三百六十五度打滚

    然后就这,我一直被杠到 #50 才受不了说了句菜,人脾气再好,也会生气的吧
    Jwyt
        92
    Jwyt  
       2021-08-20 11:25:53 +08:00
    看完了,对新手确实有门槛
    nannanziyu
        93
    nannanziyu  
       2021-08-20 11:29:35 +08:00
    @Jwyt
    你觉得 #37 楼的方法麻不麻烦呢
    skinny
        94
    skinny  
       2021-08-20 11:32:48 +08:00
    x940727
        95
    x940727  
       2021-08-20 11:35:12 +08:00
    一个 Java Python Go JavaScript 都稍微用过的,一直认为 HTTP 调用都是语言自带标准库就支持的,发现新天地了……
    Jwyt
        96
    Jwyt  
       2021-08-20 11:36:51 +08:00
    @nannanziyu
    。。个人感觉也有点麻烦
    你最开始的方法是 google,这个你得考虑墙,当然百度应该也是有的
    你第二个 复制粘贴 的方法,我看了下一个是 Manage nuget packager,一个是 cpprestsdk 我都不知道是啥
    当然我不是 c++开发,我也没有去尝试过,我的说法很片面
    nannanziyu
        97
    nannanziyu  
       2021-08-20 11:38:55 +08:00
    @Jwyt
    你看下#38 的视频……
    OneMan
        98
    OneMan  
       2021-08-20 11:39:20 +08:00
    有人人真是钻进去了出不来,恼火,一看年龄,又能理解了,固化了
    nannanziyu
        99
    nannanziyu  
       2021-08-20 11:46:02 +08:00
    @x940727
    语言是工具,每种工具都有适合自己的地
    Rust 也没有原生 http 库,C 也没有

    语言各有优略,你说的这几门语言除了 golang,我都写过十几年,java 还是我的主吃饭语言
    java 裹脚布
    python 纸质书翻页需要游标卡尺
    go 泛型都没有,1M 的源代码有 500k 的 if err != nil
    javascript 弱类型大型项目管理困难,ts 救了无数人的命
    如果只说语言优劣,那除了 ts 和 c# 别的都没有意义了?
    还是那句话,语言是工具,每种工具都有适合自己的地
    nannanziyu
        100
    nannanziyu  
       2021-08-20 11:46:56 +08:00
    @OneMan
    固化的不是你这种刻板印象的人嘛
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5436 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 07:44 · PVG 15:44 · LAX 00:44 · JFK 03:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.