hutool简介
- 时间格式化,时间转换,时间校验
- http 接口调用
- 字符串格式化处理
- ........
post请求
String url = "http://192.168.15.21:6012/Query/getDevList";
Map<String, String> map = new HashMap<>(10);
map.put("condition", "{page:1,rows:100,StationName:\"\",Online:1}");
Map<String, String> mapHeader = new HashMap<>(10);
mapHeader.put("Content-Type", "application/json");
String json = JSONUtil.toJsonStr(map);
List<SepticTankInfoAllVO> septicTankAlarmInfos = new ArrayList<>();
try {
String val = HttpUtil.createPost(url)
.addHeaders(mapHeader)
.body(json)
.execute()
.body();
septicTankAlarmInfos = JSON.parseArray(val,SepticTankInfoAllVO.class);
} catch (Exception e) {
}
return septicTankAlarmInfos;
}
get请求
String url = "http://192.168.15.21:6010/Query/getAlarmList";
Map<String, String> map = new HashMap<>(10);
map.put("StartTime", "2021-01-09 00:36:46");
map.put("EndTime", "2022-12-14 22:46:45");
List<GetSepticTankAlarmInfoVO> septicTankAlarmInfos = new ArrayList<>();
try {
String val = HttpUtil.createGet(url).timeout(1000).addHeaders(map).execute().body();
septicTankAlarmInfos = JSON.parseArray(val,GetSepticTankAlarmInfoVO.class);
} catch (Exception e) {
}
return septicTankAlarmInfos;
注意
Hutool 3.1.0 版本中引入了 HttpClient 类,它基于 Apache HttpComponents 构建,支持 TCP 连接复用。因此,如果你使用的是 Hutool 3.1.0 或更高版本,则可以使用 HttpClient 来避免大量 TIME_WAIT 状态的 TCP 连接。
TCP 连接复用
TCP 连接复用是指在客户端和服务器之间建立一个持久的连接,并在此连接上发送和接收多个请求/响应。这可以避免为每个请求/响应建立和关闭新的 TCP 连接,从而提高性能。
HttpURLConnection
HttpURLConnection 是 Java 中用于发送 HTTP 请求的类。它不会自动进行 TCP 连接复用。这意味着对于每个 HTTP 请求,它都会建立一个新的 TCP 连接,并在请求完成后关闭该连接。
大量 TIME_WAIT 状态的 TCP 连接
当 HttpURLConnection 关闭一个 TCP 连接时,该连接会进入 TIME_WAIT 状态。在此状态下,连接仍会占用系统资源,直到其超时(通常为 2 分钟)。
如果在短时间内发送大量 HTTP 请求,则会导致大量 TIME_WAIT 状态的 TCP 连接。这可能会导致性能问题,因为系统资源被耗尽。