优雅的发送http请求
做项目的时候,请求第三方接口是常用的功能:
一、get常用的方法及传参
1、使用占位符:适用于参数已知
String url = "https://q.stock.sohu.com/hisHq?code={code}8&start={start}&end={end}&stat={stat}&order={order}&period={period}&callback={callback}&rt={rt}";
Map<String, Object> params = new HashMap<>();
params.put("code", "cn_601398");
params.put("start", "20231130");
params.put("end", "20231230");
params.put("stat", 1);
params.put("order", "D");
params.put("period", "d");
params.put("callback", "historySearchHandler");
params.put("rt", "json");
ResponseEntity<RestVO> forEntity = restTemplate.getForEntity(url, RestVO.class, params);
2、使用UriComponentsBuilder和LinkedMultiValueMap:适用于参数个数不定
MultiValueMap<String, String> params = new LinkedMultiValueMap(); String starttime = i + startTime[j]; String endtime = i + endTime[j]; params.add("code", "cn_" + 601398); params.add("start", starttime); params.add("end", endtime); params.add("stat", "1"); params.add("order", "D"); params.add("period", "d"); params.add("callback", "historySearchHandler"); params.add("rt", "json"); UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url); URI uri = builder.queryParams(params).build().encode().toUri();
ResponseEntity<RestVO> forEntity= restTemplate.getForEntity(uri, RestVO.class);
拼接结果都一样:https://q.stock.sohu.com/hisHq?code=cn_601398&start=20231130&end=20231230&stat=1&order=D&period=d&callback=historySearchHandler&rt=json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)