用过不少 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
1
aidoudou 2020-08-23 10:12:53 +08:00
3
|
2
wongy 2020-08-23 10:14:51 +08:00 1
用的是 hutool-http 工具包
|
3
coetzee 2020-08-23 10:19:03 +08:00
用的 feign,feign 默认用的 httpclient,但是我们替换成了 OK
|
4
flyfanc 2020-08-23 10:21:06 +08:00
3
|
5
zliea 2020-08-23 10:24:29 +08:00 via iPhone 1
resttemplate over httpclient/okhttp
|
6
ily433664 2020-08-23 10:36:47 +08:00
3
|
7
srx1982 2020-08-23 10:40:01 +08:00
4
|
8
chendy 2020-08-23 10:41:29 +08:00
6 ( RestTemplate )套着 2 ( HttpClient ),spring-boot 自动配置
|
9
Foxkeh 2020-08-23 10:43:11 +08:00
234567 都用, 老项目 234, 新项目 256
|
10
rockyou12 2020-08-23 10:44:47 +08:00
OkHttp 和 feign 用得多,如果写 android 会用 Retrofit 。基本不管用哪个,多少都要针对业务做封装或配置
|
11
zoharSoul 2020-08-23 10:54:56 +08:00
okhttp + retrofit
|
12
DreamSpace 2020-08-23 11:03:02 +08:00 via Android
restTemplate over okhttp
但是 restTemplate 不好做文件下载 |
13
vimfox 2020-08-23 11:08:08 +08:00
AsyncHttpClient
|
14
skypyb 2020-08-23 11:14:08 +08:00 via Android 3
jdk9 新增的那个 httpclient 有坑的,不让设置一些敏感的请求头, 而且你本地能跑指不定到服务器上就崩了。 我用 java11 就遇到过。 想要
要关掉这个检查还得上 jdk12 才能有这个设置 |
15
WebKit 2020-08-23 11:21:57 +08:00 via Android
okhttp
|
16
Cyron 2020-08-23 11:42:08 +08:00
简单请求 Hutool 可以
|
17
ilumer 2020-08-23 11:50:13 +08:00
feign
|
18
zhouhui 2020-08-23 11:56:39 +08:00
jodd http
https://jodd.org/ |
19
xuanbg 2020-08-23 12:36:57 +08:00
3 对外,5 对内
|
20
sagaxu 2020-08-23 12:47:47 +08:00 via Android
同步阻塞用 okhttp,唯一不足是不支持带 body 的 GET 请求。
异步和协程用 vertx-web-client 。 都会做些封装,但是发现也没少写很多代码 |
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 发现就编译报错了。 |
22
crossoverJie 2020-08-23 15:43:39 +08:00
|
23
CoSpLi 2020-08-23 15:49:04 +08:00 via iPhone
httpclient 有 fluent-hc 这个官方封装的链式调用的
|
24
m1ch3ng 2020-08-23 16:09:12 +08:00
hutool
|
25
wancaibida 2020-08-23 16:13:56 +08:00 via iPhone
没人用 unirest 么
|
26
kingfalse 2020-08-23 16:59:29 +08:00 via Android
jsoup,不管是爬虫还是平常服务调接口我都用这个
|
27
szuwl 2020-08-23 17:01:37 +08:00 1
没有人用 unirest 么
|
28
BBCCBB 2020-08-23 17:13:26 +08:00
当然是 feign 啊.
|
29
oneoy 2020-08-23 17:42:56 +08:00 via Android
原声 socket
|
30
KevinBlandy 2020-08-23 17:47:24 +08:00
RestTemplate
|
31
yeziqing 2020-08-23 18:41:00 +08:00
JDK11 自带的 HttpClient
|
32
cassyfar 2020-08-23 18:48:29 +08:00
apach httpclient 有什么不好?
|
33
Cuo 2020-08-23 18:49:58 +08:00 via iPhone
个人项目用 4
|
34
Cbdy 2020-08-23 18:58:35 +08:00 via Android
遇到过 jdk9 的 httpclient 的一些 bug,我用 resttemplate
@DreamSpace 你遇到什么下载文件的问题? |
35
micean 2020-08-23 19:22:08 +08:00 via Android
vertx 自带
|
36
tairan2006 2020-08-23 19:38:32 +08:00
用 4
|
38
jzmws 2020-08-23 20:11:45 +08:00
spring boot 项目直接用 RestTemplate 很方便
|
39
wdlth 2020-08-23 20:13:49 +08:00
OKHttp
|
40
chocotan 2020-08-23 20:47:13 +08:00
主要用 okhttp
偶尔用 asynchttpclient |
41
guanhui07 2020-08-23 20:57:01 +08:00
3
|
42
iFlicker 2020-08-23 23:04:32 +08:00 via Android
HttpURLConnection 🙈
|
43
arloor 2020-08-23 23:19:49 +08:00
appache 的 httpclient 5.0 才支持 http2,而且 beta
|
44
mango88 2020-08-23 23:42:49 +08:00 1
vertx 的 WebClient
|
45
sutra 2020-08-24 08:56:44 +08:00
看情况,大部分情况下,不直接使用 http client,而是选择封装过的。比如只是调用 RESTful API 时,RestTemplate 就很方便。
|
46
unco020511 2020-08-24 09:06:31 +08:00
原来 java 也能用 retrofit 吗,我以为只有 Android 才用
|
47
ShotaconXD 2020-08-24 09:43:11 +08:00
RestTemplate 很好用啊.
|
48
l107868382 2020-08-24 09:43:43 +08:00
Requests 不香吗?
|
49
wbf1013 2020-08-24 09:54:35 +08:00
上周哪位用 hutool 的大佬,爬了我们网站[doge]
|
50
Yano 2020-08-24 09:55:33 +08:00
RestTemplate 。如果 postman 请求的话,能直接复制 Java 代码,这时就用 okhttp
|
51
JRay 2020-08-24 09:58:28 +08:00
hutool-http + 1
|
52
seanxx 2020-08-24 09:58:50 +08:00
5
|
53
william2ct 2020-08-24 10:09:15 +08:00
3
|
54
nutting 2020-08-24 10:33:46 +08:00
http2.0 好像很多不支持,okhttp 可以
|
55
qocja 2020-08-24 10:34:45 +08:00
postman 复制出来的 okttp 代码
|
56
bigpower777 2020-08-24 10:57:24 +08:00
netty 自己写一个想要什么都有~
|
57
tramm 2020-08-24 11:02:24 +08:00
okhttp
现在 forest,对 okhttp,httpclient 的封装 |
58
yamasa 2020-08-24 12:49:26 +08:00
webflux 内的 webclient 。在 reactor 那上面的一套。另外,“. 但其实对于后端来说,几乎所有的都是非常简单的 json 请求”?? 说这种话可要谨慎啊。
|
59
luxinfl 2020-08-24 15:21:22 +08:00
36 对外,5 对内
|
60
leaderhyh 2020-08-24 16:01:23 +08:00
Retrofit
|
61
Kamiyu0087 2020-08-24 18:11:41 +08:00 1
用 HttpURLConnection #手动捂脸
|
62
joyhub2140 2020-08-24 18:34:01 +08:00 via Android
@Kamiyu0087 不错,识货,用了 10 年了,除非要求强上 http2.0,不然这货就是最简单的选择。
|
63
supermoonie 2020-08-24 18:39:08 +08:00 via iPhone
我大 Netty 呢🐶
|
64
chachae 2020-08-24 22:22:23 +08:00
feign
|
65
hdfg159 2020-08-24 23:14:28 +08:00 via Android
vertx web client
|
66
751762476 2020-08-25 15:38:56 +08:00
ktor webclient
|
67
fivesmallq 2020-09-22 15:13:36 +08:00
|