优雅的发送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

posted @   曹伟666  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示