各位 Java 大佬你们 http 客户端都用什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changdy
V2EX    Java

各位 Java 大佬你们 http 客户端都用什么?

  •  
  •   changdy 2020-08-23 10:06:26 +08:00 13804 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用过不少 httpclient , 感觉大部分 client 细节非常多. 但其实对于后端来说,几乎所有的都是非常简单的 json 请求, 用起来颇有一种大炮打蚊子的感觉.

    目前公司系统针对各自的请求对 apache httpclient 进行了非常简单的封装,但即便如此,也不具备通用性.想问下各位 V 友,你们是怎么选择 httpclient 的 , 有没有进行过二次封装

    1, java 9+ 自带 httpclient(我比较喜这种链式调用的,但是 java8 没有)

    2, apache 原生 httpclient

    3, 封装过的 apache httpclient

    4, OkHttp

    5, Feign

    6, RestTemplate

    7, Retrofit

    69 条回复    2020-09-30 18:52:18 +08:00
    aidoudou
        1
    aidoudou  
       2020-08-23 10:12:53 +08:00
    3
    wongy
        2
    wongy  
       2020-08-23 10:14:51 +08:00   1
    用的是 hutool-http 工具包
    coetzee
        3
    coetzee  
       2020-08-23 10:19:03 +08:00
    用的 feign,feign 默认用的 httpclient,但是我们替换成了 OK
    flyfanc
        4
    flyfanc  
       2020-08-23 10:21:06 +08:00
    3
    zliea
        5
    zliea  
       2020-08-23 10:24:29 +08:00 via iPhone   1
    resttemplate over httpclient/okhttp
    lovelive1024
        6
    lovelive1024  
       2020-08-23 10:36:47 +08:00
    3
    srx1982
        7
    srx1982  
       2020-08-23 10:40:01 +08:00
    4
    chendy
        8
    chendy  
       2020-08-23 10:41:29 +08:00
    6 ( RestTemplate )套着 2 ( HttpClient ),spring-boot 自动配置
    Foxkeh
        9
    Foxkeh  
       2020-08-23 10:43:11 +08:00
    234567 都用, 老项目 234, 新项目 256
    rockyou12
        10
    rockyou12  
       2020-08-23 10:44:47 +08:00
    OkHttp 和 feign 用得多,如果写 android 会用 Retrofit 。基本不管用哪个,多少都要针对业务做封装或配置
    zoharSoul
        11
    zoharSoul  
       2020-08-23 10:54:56 +08:00
    okhttp + retrofit
    DreamSpace
        12
    DreamSpace  
       2020-08-23 11:03:02 +08:00 via Android
    restTemplate over okhttp
    但是 restTemplate 不好做文件下载
    vimfox
        13
    vimfox  
       2020-08-23 11:08:08 +08:00
    AsyncHttpClient
    skypyb
        14
    skypyb  
       2020-08-23 11:14:08 +08:00 via Android   3
    jdk9 新增的那个 httpclient 有坑的,不让设置一些敏感的请求头, 而且你本地能跑指不定到服务器上就崩了。 我用 java11 就遇到过。 想要
    要关掉这个检查还得上 jdk12 才能有这个设置
    WebKit
        15
    < href="/member/WebKit" class="dark">WebKit  
       2020-08-23 11:21:57 +08:00 via Android
    okhttp
    Cyron
        16
    Cyron  
       2020-08-23 11:42:08 +08:00
    简单请求 Hutool 可以
    ilumer
        17
    ilumer  
       2020-08-23 11:50:13 +08:00
    feign
    zhouhui
        18
    zhouhui  
       2020-08-23 11:56:39 +08:00
    xuanbg
        19
    xuanbg  
       2020-08-23 12:36:57 +08:00
    3 对外,5 对内
    sagaxu
        20
    sagaxu  
       2020-08-23 12:47:47 +08:00 via Android
    同步阻塞用 okhttp,唯一不足是不支持带 body 的 GET 请求。

    异步和协程用 vertx-web-client 。

    都会做些封装,但是发现也没少写很多代码
    qwerthhusn
        21
    qwerthhusn  
       2020-08-23 13:31:39 +08:00
    非大佬,用的 OkHttp 封装的对外
    JDK 自带的 HttpClient 用过,但是在 TLS1.3 的情况下有 BUG,弃用了。不过过了这么久 BUG 可能已经修复了,如果后面有新工程准备用这个重新封装。

    对内的话,直接 Feign 了,管他底层是用的 Apache 还是 OkHttp

    不用 Apache HttpClient 的原因是,一个模型太复杂,没仔细去看里面详细的东西,文档也不好,官网就几个示例,不像 OkHttp,就一个统一的 OkHttpClient 一把梭;还有一个问题就是版本兼容性不好,4.4 的 API,4.5 发现就编译报错了。
    crossoverJie
        22
    crossoverJie  
       2020-08-23 15:43:39 +08:00
    JadeV
        23
    JadeV  
       2020-08-23 15:49:04 +08:00 via iPhone
    httpclient 有 fluent-hc 这个官方封装的链式调用的
    m1ch3ng
        24
    m1ch3ng  
       2020-08-23 16:09:12 +08:00
    hutool
    em998
        25
    em998  
       2020-08-23 16:13:56 +08:00 via iPhone
    没人用 unirest 么
    kingfalse
        26
    kingfalse  
       2020-08-23 16:59:29 +08:00 via Android
    jsoup,不管是爬虫还是平常服务调接口我都用这个
    szuwl
        27
    szuwl  
       2020-08-23 17:01:37 +08:00   1
    没有人用 unirest 么
    BBCCBB
        28
    BBCCBB  
       2020-08-23 17:13:26 +08:00
    当然是 feign 啊.
    oneoy
        29
    oneoy  
       2020-08-23 17:42:56 +08:00 via Android
    原声 socket
    KevinBlandy
        30
    KevinBlandy  
       2020-08-23 17:47:24 +08:00
    RestTemplate
    yeziqing
        31
    yeziqing  
       2020-08-23 18:41:00 +08:00
    JDK11 自带的 HttpClient
    cassyfar
        32
    cassyfar  
       2020-08-23 18:48:29 +08:00
    apach httpclient 有什么不好?
    Cuo
        33
    Cuo  
       2020-08-23 18:49:58 +08:00 via iPhone
    个人项目用 4
    Cbdy
        34
    Cbdy  
       2020-08-23 18:58:35 +08:00 via Android
    遇到过 jdk9 的 httpclient 的一些 bug,我用 resttemplate
    @DreamSpace 你遇到什么下载文件的问题?
    micean
        35
    micean  
       2020-08-23 19:22:08 +08:00 via Android
    vertx 自带
    tairan2006
        36
    tairan2006  
       2020-08-23 19:38:32 +08:00
    用 4
    coolxll
        37
    coolxll  
       2020-08-23 19:59:13 +08:00
    @szuwl #27 Unirest 挺好用的
    jzmws
        38
    jzmws  
       2020-08-23 20:11:45 +08:00
    spring boot 项目直接用 RestTemplate 很方便
    wdlth
        39
    wdlth  
       2020-08-23 20:13:49 +08:00
    OKHttp
    chocotan
        40
    chocotan  
       2020-08-23 20:47:13 +08:00
    主要用 okhttp
    偶尔用 asynchttpclient
    guanhui07
        41
    guanhui07  
       2020-08-23 20:57:01 +08:00
    3
    iFlicker
        42
    iFlicker  
       2020-08-23 23:04:32 +08:00 via Android
    HttpURLConnection
    arloor
        43
    arloor  
       2020-08-23 23:19:49 +08:00
    appache 的 httpclient 5.0 才支持 http2,而且 beta
    mango88
        44
    mango88  
       2020-08-23 23:42:49 +08:00   1
    vertx 的 WebClient
    sutra
        45
    sutra  
       2020-08-24 08:56:44 +08:00
    看情况,大部分情况下,不直接使用 http client,而是选择封装过的。比如只是调用 RESTful API 时,RestTemplate 就很方便。
    unco020511
        46
    unco020511  
       2020-08-24 09:06:31 +08:00
    原来 java 也能用 retrofit 吗,我以为只有 Android 才用
    ShotaconXD
        47
    ShotaconXD  
       2020-08-24 09:43:11 +08:00
    RestTemplate 很好用啊.
    abc0
        48
    abc0  
       2020-08-24 09:43:43 +08:00
    Requests 不香吗?
    wbf1013
        49
    wbf1013  
       2020-08-24 09:54:35 +08:00
    上周哪位用 hutool 的大佬,爬了我们网站[doge]
    Yano
        50
    Yano  
       2020-08-24 09:55:33 +08:00
    RestTemplate 。如果 postman 请求的话,能直接复制 Java 代码,这时就用 okhttp
    JRay
        51
    JRay  
       2020-08-24 09:58:28 +08:00
    hutool-http + 1
    seanxx
        52
    seanxx  
       2020-08-24 09:58:50 +08:00
    5
    william2ct
        53
    william2ct  
       2020-08-24 10:09:15 +08:00
    3
    nutting
        54
    nutting  
       2020-08-24 10:33:46 +08:00
    http2.0 好像很多不支持,okhttp 可以
    qocja
        55
    qocja  
       2020-08-24 10:34:45 +08:00
    postman 复制出来的 okttp 代码
    bigpower777
        56
    bigpower777  
       2020-08-24 10:57:24 +08:00
    netty 自己写一个想要什么都有~
    tramm
        57
    tramm  
       2020-08-24 11:02:24 +08:00
    okhttp
    现在 forest,对 okhttp,httpclient 的封装
    yamasa
        58
    yamasa  
       2020-08-24 12:49:26 +08:00
    webflux 内的 webclient 。在 reactor 那上面的一套。另外,“. 但其实对于后端来说,几乎所有的都是非常简单的 json 请求”?? 说这种话可要谨慎啊。
    luxinfl
        59
    luxinfl  
       2020-08-24 15:21:22 +08:00
    36 对外,5 对内
    leaderhyh
        60
    leaderhyh  
       2020-08-24 16:01:23 +08:00
    Retrofit
    Kamiyu0087
        61
    Kamiyu0087  
       2020-08-24 18:11:41 +08:00   1
    用 HttpURLConnection #手动捂脸
    nxforce
        62
    nxforce  
       2020-08-24 18:34:01 +08:00 via Android
    @Kamiyu0087 不错,识货,用了 10 年了,除非要求强上 http2.0,不然这货就是最简单的选择。
    supermoonie
        63
    supermoonie  
       2020-08-24 18:39:08 +08:00 via iPhone
    我大 Netty 呢
    chachae
        64
    chachae  
       2020-08-24 22:22:23 +08:00
    feign
    hdfg159
        65
    hdfg159  
       2020-08-24 23:14:28 +08:00 via Android
    vertx web client
    751762476
        66
    751762476  
       2020-08-25 15:38:56 +08:00
    ktor webclient
    fivesmallq
        67
    fivesmallq  
       2020-09-22 15:13:36 +08:00
    duniqb
        68
    duniqb  
       2020-09-30 17:22:40 +08:00
    @kingfalse jsoup 是解析的吧
    kingfalse
        69
    kingfalse  
       2020-09-30 18:52:18 +08:00 via Android
    @duniqb 多去看看官方文档吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2405 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 02:31 PVG 10:31 LAX 18:31 JFK 21:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86