Java中restTemplate的使用-全球动态
(资料图片)
原文链接
GitHub项目地址
Gitee项目地址
本文介绍restTemplate基础用法。
Java中get和post的用法请参考:
https://mp.weixin.qq.com/s/mC0D1nuCqIori5bWtLorWQ
1 提供get/post接口
1.1 Controller
@RestController@RequestMapping("/homepage")public class MyController { @Autowired MyService myService; // 提供get接口 @GetMapping("/provideGet") public Map provideGet(){ return myService.provideGet(); } // 提供post接口 @PostMapping("/providePost") public Map providePost(@RequestParam("number") int number, @RequestParam("name") String name) { return myService.providePost(number, name); } // 提供map参数的post接口 @PostMapping("/providePostByMap") public Map providePostByMap(@RequestParam Map map) { return myService.providePostByMap(map); } // 调用get接口 @GetMapping("/useGet") public Map useGet() { return myService.useGet(); }}
1.2 Service
@Service@EnableSchedulingpublic class MyService { public Map provideGet() { Map res = new HashMap<>(); res.put("number", "3"); res.put("name", "张三get"); System.out.println("provideGet res:" + res + "\n"); return res; } public Map providePost(int number, String name) { Map res = new HashMap<>(); res.put("number", number); res.put("name", name); return res; } public Map providePostByMap(Map map) { int number = map.get("number") == null ? 0 : Integer.parseInt((String) map.get("number")); String name = map.get("name") == null ? "" : (String) map.get("name"); Map res = new HashMap<>(); res.put("number", number); res.put("name", name); System.out.println("providePostByMap res:" + res + "\n"); return res; }}
2 调用get/post接口
使用restTemplate调用get/post接口。
getForObject()
:返回值是HTTP
协议的响应体getForEntity()
:返回的是ResponseEntity
,ResponseEntity
是对HTTP
响应的封装,除了包含响应体,还包含HTTP
状态码、contentType、contentLength、Header
等信息2.1 Controller
@RestController@RequestMapping("/homepage")public class MyController { @Autowired MyService myService; // 调用get接口 @GetMapping("/useGet") public Map useGet() { return myService.useGet(); } // 调用get接口验证账号密码 @GetMapping("/useGetByPsw") public Map useGetByPsw() { return myService.useGetByPsw(); } // 调用post接口 @PostMapping("/usePost") public Map usePost() { return myService.usePost(); }}
2.2 Service
@Service@EnableSchedulingpublic class MyService { @Resource private RestTemplate restTemplate; String getURL = "http://localhost:8081/homepage/provideGet"; String postURL = "http://localhost:8081/homepage/providePostByMap"; public Map useGet() { // getForObject返回值是HTTP协议的响应体 String strObject = restTemplate.getForObject(getURL, String.class); JSONObject jsonObject = JSONObject.parseObject(strObject); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("useGet jsonObject:" + jsonObject + "\n"); System.out.println("useGet responseData:" + responseData + "\n"); System.out.println("useGet returnData:" + returnData + "\n"); return returnData; } public Map useGetByPsw() { RestTemplateBuilder builder = new RestTemplateBuilder(); RestTemplate restTemplate = builder.basicAuthentication("username", "password").build(); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.getForEntity(getURL, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("useGetByPsw returnData:" + responseData + "\n"); System.out.println("useGetByPsw returnData:" + returnData + "\n"); return returnData; } public Map usePost() { //RestTemplate在postForObject时,用MultiValueMap,不可使用HashMap。 MultiValueMap sendData = new LinkedMultiValueMap<>(); sendData.add("number", "3"); sendData.add("name", "张三post"); // getForObject返回值是HTTP协议的响应体 String strObject = restTemplate.postForObject(postURL, sendData, String.class); JSONObject jsonObject = JSONObject.parseObject(strObject); // getForEntity返回的是ResponseEntity,是对HTTP响应的封装 ResponseEntity responseData = restTemplate.postForEntity(postURL, sendData, ResponseResult.class); Map returnData = new HashMap<>(); returnData.put("StatusCode:", responseData.getStatusCode()); returnData.put("Body:", responseData.getBody()); System.out.println("usePost jsonObject:" + jsonObject + "\n"); System.out.println("usePost responseData:" + responseData + "\n"); System.out.println("usePost returnData:" + returnData + "\n"); return returnData; }}
标签:
相关文章
汽车销量下滑,福特、通用等外国车企加入中国价格战
我们注意到,近年来中国汽车市场的增速开始放缓,汽车销量下滑的趋势愈发明显。然而,这并不妨碍福特、通用等外国车企加入中国价格战,通过不
全球头条:株洲荷塘税务:税收支持让企业研发更有底气
为进一步畅通税企沟通渠道,快速响应企业涉税需求,近日,国家税务总局株洲市荷塘区税务局按照总局统一部署,以“办好惠民事,服
动态:新战略!新形象!NUOMI诺米五金助力高端整家美学再升级
日前,为了以高端、更国际化的品牌面貌触达菁英家庭,赋能全球区域市场的运营开拓,广东诺米家居智能科技有限公司(简称“诺米”)发布全新...
曹郁、姚晨监制电影《脐带》在京举行首映礼,3月18日上映_全球百事通
影片监制曹郁、姚晨,导演乔思雪,主演巴德玛、伊德尔、娜荷芽等主创出席活动。非常感谢我的两位监制曹郁、姚晨,还有这么多优秀的主创陪我一
仁怀税务:普法宣传入企业 便民办税送春风_全球速讯
春日融融之时,“办好惠民事服务现代化暨便民办税春风行动”又一次向春而行,国家税务总局仁怀市税务局“三师三员”志愿者服务
小班数学教案《颜色对应》_小班数学教案
1、 作为一名专为他人授业解惑的人民教师,通常需要用到教案来辅助教学,编写教案有利于我们弄通教材内容,进而选择科学、恰
今日报丨拉文凯斯的遗产任务线(拉文凯斯的遗产任务线详情)
1、《魔兽世界》怀旧服拉文凯斯的遗产任务线是艾索雷葛斯的魔法账本、翻译龙语、龙语傻瓜教程、敲诈、螳螂捕蝉、唯一的方案、好
全球快讯:罗黄降压片功效与作用_杜仲降压片的作用
1、杜仲降压片具有扩张血管、降血压、降血糖、降血脂、增强免疫功能、镇痛、镇静、抗炎、利尿、抗衰老、减弱子宫收缩的作用。2
司法部:2022年度国家统一法律职业资格考试主观题考试将于3月26日举行
央视网消息:据司法部网站消息,2022年度国家统一法律职业资格考试主观题考试将于2023年3月26日举行。3月21日0时起,开通准考证网上打印通道。
三年级上册语文教案教学反思_三年级上册语文教案
1、 作为一位不辞辛劳的人民教师,编写教案是必不可少的,借助教案可以有效提升自己的教学能力。怎样写教案才更能起到其作用
花旗:瑞信被收购的原因,可归结为其最近遭遇的资金外流速度
花旗分析师在一份报告中表示,导致瑞士信贷被瑞银收购的原因,可归结为其最近遭遇的资金外流速度,这显示出了低估储户心理的风险。花旗表示,
编制混乱、隐蔽难找!北京“任性”楼牌号真不少
连日来,北京市民纷纷提供线索,记者据此探访十余个小区后发现,不少小区楼牌号存在编制规则混乱、多种样式共存、标识位置隐蔽等问题。本应给
惠同新材财务内控不规范,2022年前三季度营收下滑
乐居财经刘治颖3月16日,湖南惠同新材料股份有限公司(以下简称:惠同新材)更新上市申请审核动态,该公司已回复审核问询函,回复的问题主要有
早报:各种要素一应俱全的盛筵之夜
球迷朋友们早上好,欢迎收看3月20日的懂球帝早报。昨夜今晨欧洲足坛进行了多场焦点大战,各种要素一应俱全让人目不暇接,你看得过瘾吗?另外接
犹太人血统是什么意思_犹太人割礼是什么意思
1、1犹太包皮环切术是指男性对阴茎的全部或部分进行包皮环切术。根据犹太教,所有的男孩都应该接受割礼。在犹太人中,割礼实际
排队看国宝,周末的南山路更堵了!宋画真迹大展刚开幕就人气爆棚,最多可提前7天预约观展
都市快报讯这个周末,杭州哪条路人气最旺?南山路一定排名靠前。一头是繁花盛开的太子湾公园,各色郁金香、洋水仙争奇斗艳,春日限定的樱花也
电磁炮按其结构的不同可分为机械式_电磁炮按其结构的不同可分为
1、电磁炮按其结构的不同可分为线圈炮、轨道炮、电热炮、重接炮。2、电磁线圈炮是由环绕炮膛的一系列固定线圈与环绕弹丸的弹体
蔡昉:结构的变化是未来中国经济总量的驱动力_要闻
蔡昉:结构的变化是未来中国经济总量的驱动力一直以来,人口都是经济增长的重要因素,从一定程度上看,二者发展阶段相互适配。基于人口增长率
当前最新:肯尼亚公开赛卡皮罗决赛轮66杆获胜,结束三年冠军荒
北京时间3月13日,DP世界巡回赛——2023肯尼亚公开赛,在内罗比穆海咖高尔夫俱乐部结束了决赛轮的争夺。西班牙球手荷格·卡皮罗凭借最后一...
每日报道:2005年属什么生肖_2005年超级女声的20强 谁知道
1、没有前20。2、只评出了前151 李宇春2 周笔畅3 张靓颖4 何洁5 纪敏佳6 黄雅莉7 叶一茜8 易慧9 赵静怡10 朱妍11 林
世界头条:西安交大春季综合类招聘会吸引千家单位万名学子
西安交大春季综合类招聘会吸引千家单位万名学子---西安交通大学千家单位万名学子2023年春季综合类招聘会举办。本次招聘会有1055家单位共计提供