V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
changdy
V2EX  ›  Java

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

  •  
  •   changdy · Aug 23, 2020 · 14297 views
    This topic created in 2084 days ago, the information mentioned may be changed or developed.

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

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

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

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

    不用 Apache HttpClient 的原因是,一个模型太复杂,没仔细去看里面详细的东西,文档也不好,官网就几个示例,不像 OkHttp,就一个统一的 OkHttpClient 一把梭;还有一个问题就是版本兼容性不好,4.4 的 API,4.5 发现就编译报错了。
    crossoverJie
        22
    crossoverJie  
       Aug 23, 2020
    JadeV
        23
    JadeV  
       Aug 23, 2020 via iPhone
    httpclient 有 fluent-hc 这个官方封装的链式调用的
    m1ch3ng
        24
    m1ch3ng  
       Aug 23, 2020
    hutool
    em998
        25
    em998  
       Aug 23, 2020 via iPhone
    没人用 unirest 么
    kingfalse
        26
    kingfalse  
       Aug 23, 2020 via Android
    jsoup,不管是爬虫还是平常服务调接口我都用这个
    szuwl
        27
    szuwl  
       Aug 23, 2020   ❤️ 1
    没有人用 unirest 么
    BBCCBB
        28
    BBCCBB  
       Aug 23, 2020
    当然是 feign 啊.
    oneoy
        29
    oneoy  
       Aug 23, 2020 via Android
    原声 socket
    KevinBlandy
        30
    KevinBlandy  
       Aug 23, 2020
    RestTemplate
    yeziqing
        31
    yeziqing  
       Aug 23, 2020
    JDK11 自带的 HttpClient
    cassyfar
        32
    cassyfar  
       Aug 23, 2020
    apach httpclient 有什么不好?
    Cuo
        33
    Cuo  
       Aug 23, 2020 via iPhone
    个人项目用 4
    Cbdy
        34
    Cbdy  
       Aug 23, 2020 via Android
    遇到过 jdk9 的 httpclient 的一些 bug,我用 resttemplate
    @DreamSpace 你遇到什么下载文件的问题?
    micean
        35
    micean  
       Aug 23, 2020 via Android
    vertx 自带
    tairan2006
        36
    tairan2006  
       Aug 23, 2020
    用 4
    coolxll
        37
    coolxll  
       Aug 23, 2020
    @szuwl #27 Unirest 挺好用的
    jzmws
        38
    jzmws  
       Aug 23, 2020
    spring boot 项目直接用 RestTemplate 很方便
    wdlth
        39
    wdlth  
       Aug 23, 2020
    OKHttp
    chocotan
        40
    chocotan  
       Aug 23, 2020
    主要用 okhttp
    偶尔用 asynchttpclient
    guanhui07
        41
    guanhui07  
       Aug 23, 2020
    3
    iFlicker
        42
    iFlicker  
       Aug 23, 2020 via Android
    HttpURLConnection 🙈
    arloor
        43
    arloor  
       Aug 23, 2020
    appache 的 httpclient 5.0 才支持 http2,而且 beta
    mango88
        44
    mango88  
       Aug 23, 2020   ❤️ 1
    vertx 的 WebClient
    sutra
        45
    sutra  
       Aug 24, 2020
    看情况,大部分情况下,不直接使用 http client,而是选择封装过的。比如只是调用 RESTful API 时,RestTemplate 就很方便。
    unco020511
        46
    unco020511  
       Aug 24, 2020
    原来 java 也能用 retrofit 吗,我以为只有 Android 才用
    ShotaconXD
        47
    ShotaconXD  
       Aug 24, 2020
    RestTemplate 很好用啊.
    abc0
        48
    abc0  
       Aug 24, 2020
    Requests 不香吗?
    wbf1013
        49
    wbf1013  
       Aug 24, 2020
    上周哪位用 hutool 的大佬,爬了我们网站[doge]
    Yano
        50
    Yano  
       Aug 24, 2020
    RestTemplate 。如果 postman 请求的话,能直接复制 Java 代码,这时就用 okhttp
    JRay
        51
    JRay  
       Aug 24, 2020
    hutool-http + 1
    seanxx
        52
    seanxx  
       Aug 24, 2020
    5
    william2ct
        53
    william2ct  
       Aug 24, 2020
    3
    nutting
        54
    nutting  
       Aug 24, 2020
    http2.0 好像很多不支持,okhttp 可以
    qocja
        55
    qocja  
       Aug 24, 2020
    postman 复制出来的 okttp 代码
    bigpower777
        56
    bigpower777  
       Aug 24, 2020
    netty 自己写一个想要什么都有~
    tramm
        57
    tramm  
       Aug 24, 2020
    okhttp
    现在 forest,对 okhttp,httpclient 的封装
    yamasa
        58
    yamasa  
       Aug 24, 2020
    webflux 内的 webclient 。在 reactor 那上面的一套。另外,“. 但其实对于后端来说,几乎所有的都是非常简单的 json 请求”?? 说这种话可要谨慎啊。
    luxinfl
        59
    luxinfl  
       Aug 24, 2020
    36 对外,5 对内
    leaderhyh
        60
    leaderhyh  
       Aug 24, 2020
    Retrofit
    Kamiyu0087
        61
    Kamiyu0087  
       Aug 24, 2020   ❤️ 1
    用 HttpURLConnection #手动捂脸
    nxforce
        62
    nxforce  
       Aug 24, 2020 via Android
    @Kamiyu0087 不错,识货,用了 10 年了,除非要求强上 http2.0,不然这货就是最简单的选择。
    supermoonie
        63
    supermoonie  
       Aug 24, 2020 via iPhone
    我大 Netty 呢🐶
    chachae
        64
    chachae  
       Aug 24, 2020
    feign
    hdfg159
        65
    hdfg159  
       Aug 24, 2020 via Android
    vertx web client
    751762476
        66
    751762476  
       Aug 25, 2020
    ktor webclient
    fivesmallq
        67
    fivesmallq  
       Sep 22, 2020
    duniqb
        68
    duniqb  
       Sep 30, 2020
    @kingfalse jsoup 是解析的吧
    kingfalse
        69
    kingfalse  
       Sep 30, 2020 via Android
    @duniqb 多去看看官方文档吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4704 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 241ms · UTC 01:04 · PVG 09:04 · LAX 18:04 · JFK 21:04
    ♥ Do have faith in what you're doing.