Java中restTemplate的使用
【资料图】
原文链接
GitHub项目地址
Gitee项目地址
本文介绍restTemplate基础用法。
Java中get和post的用法请参考:Java中Get和Post的使用
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 strObject1 = restTemplate.getForObject(getURL, String.class); //无参 JSONObject jsonObject1 = JSONObject.parseObject(strObject1); MultiValueMap sendData = new LinkedMultiValueMap<>(); sendData.add("number", "3"); sendData.add("name", "张三post"); String strObject2 = restTemplate.getForObject(getURL, String.class, sendData); // 带参 JSONObject jsonObject2 = JSONObject.parseObject(strObject2); // 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 jsonObject1:" + jsonObject1 + "\n"); System.out.println("useGet jsonObject2:" + jsonObject2 + "\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; }}
标签:
推荐文章
- Java中restTemplate的使用
- 观天下!睡前与手机「断舍离」:改读 20 分钟的书,生活有了这些变化
- 美财政部对白俄罗斯3个实体和9名个人实施制裁
- 官方:太阳主教练蒙蒂因在不敌湖人赛后公开指责裁判被罚款2万-世界热推荐
- 玉猪龙是什么文化时期的玉器 当前聚焦
- 拜仁变天!图赫尔接替纳帅!兵锋剑指曼城!
- 力合微: 关于向不特定对象发行可转换公司债券申请获得上海证券交易所上市审核委员会审议通过的公告
- 如懿传十二阿哥结局_如懿传李玉结局_焦点播报
- 2月新能源轿车销量榜,比亚迪率中国品牌合围特斯拉
- 以生物造万物:投“合”奔“成”,顺势而上,会聚未来|合成生物学年度盛典——第四届工程生物创新大会即将在深圳开启!
- 环球观速讯丨火影忍者阿飞迪达拉
- 环球简讯:2023浙江省级人才可以申领小客车指标吗
- 中华民国开国纪念银元价格(2023年03月24日)
- 无悔华夏七国之乱所有结局怎么达成?无悔华夏七国之乱结局条件大全
- 强信心·开新局丨优品质、提水平、扩消费——吉林人参加速迈向千亿级产业-焦点短讯
- 日本央行换届之前 通胀13个月来首次放缓
- 社会库存持续走低 吨钢利润小幅走高 今热点
- 天天快消息!美团老板是谁创办的
- 暴雨、强对流,中央气象台双预警齐发
- 当前播报:平南县气象台发布雷电橙色预警信号【II级/严重】【2023-03-24】
- 谁会是“掼”军?扬子晚报“新海船杯”掼蛋联谊赛将开赛
- 热消息:当日快讯:上海清算所总经理汪洪波会见法国兴业银行亚太区首席执行官一行
- 亲爱的回家剧情介绍
- 最新保险公司活动策划方案(六篇)
- 要闻:践行雷锋精神 关爱留守儿童 榆林定边县总工会开展关爱留守儿童志愿服务活动
- 4日2板吉宏股份:近期经营情况正常 内外部经营环境未发生重大变化 环球即时
- 个人交五险一金每月多少钱?自己能交五险一金吗
- 支持实体经济仍需加力
- 年轻就要敢想敢拼!00后小将王长浩打破50米蝶泳全国纪录
- 环球热议:山蜜草的功效与作用是什么
- 2023年3月23日山东省甲醇价格最新行情预测
- 开出租车需要什么条件及流程_开出租车需要什么条件
- 环球快播:首都机场临空经济区——建设朝阳产业聚集地
- 任泽平:2023年的经济肯定是好的,房地产将首现“分化式复苏”
- 恒大深夜披露境外债务重组方案 预计重组协议将于10月1日起生效
- 十三星座
- 秘笈追踪大结局_秘笈追踪
- 汽车新消息:宝马iNEXT多个版本曝光 续航最高超700km
- 【天天聚看点】泰国发现失踪多天含放射物部件 已与其他金属一同熔炼
- 环球报道:百度视频电视剧场,百度电视剧场
- 【全球速看料】镇江房屋出租价格_镇江房屋出租
- 可怕!乔治抢篮板落地时右腿反关节受伤,赛后柱拐杖+坐手推车离开-世界速看料
- 焦点信息:家乐福昆明3个门店被上锁停业,均涉长期拖欠租金和物业费
- 焦点消息!南通每年交350元的医保卡是否有钱?
- 省美术馆连开四大展为市民奉上艺术盛宴
- 大连市气象局发布海上大风蓝色预警【IV级/一般】【2023-03-22】-每日热闻
- 热词分析工具app_热词分析工具
- 汇通达网络拟5.04亿元收购南京好享家工程科技100%股权
- 静电产生的三大原因? 世界动态
- 电褥子有辐射吗对孕妇(电褥子有辐射吗)
- 四川在全国率先开展牙冠竞价挂网,入围均价327元 环球观天下
- 焦点日报:核桃芝麻糕的做法_芝麻糕的做法
- 世界速讯:腾讯支付新专利可同时验证掌纹人脸
- 环球快播:联合国:非洲约1.9亿儿童正面临3种与水资源相关的“危机”
最新资讯
- 士兰微:3月20日融资净买入3464.8万元,连续3日累计净买入6137.53万元 全球新动态
- 英冠比分预测,米尔沃尔主场对阵斯旺西-当前焦点
- 每日简讯:小女孩穿丝袜被挠脚心_挠脚心女孩
- 用于靶向化疗的DNA纳米凝胶 每日报道
- 焦点速讯:丽华快餐服务电话_无锡丽华快餐电话
- 天天热门:晋王羲之行穰帖_对于晋王羲之行穰帖简单介绍
- tplink怎么重新设置wifi_tp link怎么重新设置|热议
- 焦点滚动:杭州社保流水账单怎么打印
- 多彩贵州·花漾中国|沿河第十二届李花节开幕! 全球报资讯
- 华安证券:3月17日获融资买入1395.87万元,占当日流入资金比例16.3%
- 2023年3月19日江苏省甲酸钠价格最新行情预测_讯息
- 凤凰晚报|普京亲自开车视察马里乌波尔;知情人称杀夫藏尸案凶手喜欢打赏男主播
- 君子之交by蓝淋txt下载(君子之交by蓝淋txt)-环球报资讯
- 世界今日报丨生活也许是一道藩篱,但是我们可以既在其中,又在其外 电影《藩篱》(部分剧透)
- 7月起实施!电动自行车乘员头盔“强制性国家标准”来了_焦点速递
- 全球看点:internet属于什么网_internet怎样读
- 为何CBA本赛季来自NBA的外援表现很水?是NBA水平下降了吗-天天简讯
- 84消毒液擦拭完是否需要清水洗?
- 买电影票的app(买电影票哪个软件便宜)
- 罡风呼啸小说_罡风
- 警方回应女子用铁链牵爬行男子直播 具体是什么情况?
- 为多长5厘米给孩子打激素,生长黄金期家长该如何选对方法? 当前视点
- 步步高t600点读机原价多少钱_步步高t600点读机下载中心-天天日报
- 预计进馆交易专业人员超3万人 第17届中国义乌文化和旅游产品交易博览会即将举办
- 天天即时看!唯心主义和唯物主义的根本区别_唯心主义和唯物主义有什么区别
- 业绩快报:金牌厨柜2022年净利润2.75亿 同比下降18.53%
- 南模生物(688265)3月17日主力资金净卖出282.31万元-世界速看料
- 世界即时:来了来了!新疆队已抵达五棵松体育馆 目前正在进行赛前热身
- 资讯推荐:为接班做准备!西班牙17岁公主将接受3年军事训练未来将成为军队最高指挥官
- 锡瓦斯体育后卫惬意头球进乌龙 助佛罗伦萨扩大比分 全球今亮点
- iphone维修记录查询_天才吧是否维修过保港行iphone
- 王者荣耀怎么在同城频道发言-世界今亮点
- 中新赛克: 2022年度财务决算报告|环球今头条
- 焦点快看:山东鲁花集团商贸有限公司保定分公司
- 2022年年韩国银行业盈利逾18.5万亿韩元,同比增加9.6% 全球热闻
- 当前视点!18元10万赞 直播间人气全靠刷
- 惠普m1136打印机共享怎么设置win10_惠普m1136打印机共享
- 焦点快播:独家资金:早盘主力进散户逃前10股
- 代词分类_代词表
- 环球微速讯:策划书案例范文_策划书案例
- 现代级驱逐舰改造_现代级 焦点速读
- WearOS更新使您的安卓智能手表和耳机配对变得更加容易|当前速看
- 宁波市证券期货业协会召开辖区全面实行股票发行注册制改革工作座谈会-世界热点
- 加格尔_关于加格尔的介绍 当前要闻
- 操盘手是属于什么职业|世界播资讯
- 葡萄糖酸内酯的用途_葡萄糖酸内酯副作用|世界短讯
- 世界视讯!4大项目总投资近25亿!煤化工园区零碳产业园双碳示范项目开工
- 天天头条:卓胜微03月14日获深股通增持38.97万股
- 焦点!以梦为马
- 狗宝宝_狗宝