Java中restTemplate的使用
2023-03-26 07:14:16 来源:腾讯云
(资料图)
原文链接
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的使用
- 观察:科威特货币是什么
- 空开跳闸最常见原因及处理方法_空开跳闸最常见原因
- 马拉色菌是怎么来的_马拉色菌|全球观点
- 2015年5月20日黄历
- qq拼音输入法_qqpy
- 节水护水,上海这个村三代人与水结缘
- 姐妹情深的短句子大全(姐妹情深的短句) 世界滚动
- 校园电视剧青春偶像2019(校园电视剧青春偶像2020)
- 快看点丨这些广告禁止发布!互联网广告新规5月起施行
- 益生股份:公司目前正在大力发展种猪产业
- 饥饿游戏结局
- 【独家焦点】过的组词有哪些 过组词大全690个
- 全球速讯:阿布扎比国家石油公司拟6月将海运物流子公司IPO
- 江西提前入汛:预计今年旱涝并存,形势依然严峻复杂
- 天天热头条丨租来的400万钢管转手卖废铁?一男子合同诈骗获刑十年六个月
- java图书管理系统展示_java图书管理系统_天天快看
- 开放再发力 世界如何共享中国新机遇 全球新消息
- 这几个小改变,就能让你睡个好觉!|世界睡眠日
- 大波浪是什么发型 全球百事通
- 暴露的近义词是什么
- 百舸争流 竞逐深圳大亚湾
- 卢卡因对裁判做出数钱动作被罚款3.5万美元_天天最新
- 新资讯:《命运2 》老九 23/03/25丨下周大师梦魇+传说战场
- 男人肚子大怎么减掉大肚子_肚子大是什么原因
- 家庭ktv吊顶_我的世界1 7 10整合包等价交换 天天新消息
- 吉安市气象台发布雷电黄色预警信号【III级/较重】
- 手机卡刷教程-看点
- 中国最大淡水湖鄱阳湖水位重回8米极枯线以上
- 当前滚动:苏州市新能源产业创新集群推进大会召开
- 世界快消息!“等了九个月终于得到了公道” 老人故意推倒摩托车案当庭宣判
- 重点聚焦!马丁路德金名言
- 冬季女性时尚服装搭配 每日资讯
- 未来三天陕西云量较多 部分地方有弱降水天气
- “圳”扬帆!看你乘风破浪 当前资讯
- 甘井子区多举措激发民营经济动力活力_报资讯
- 世界快看点丨3月24号华西天府医院妇科门诊开了!全是华西二院的专家
- 中欣氟材(002915)3月24日主力资金净卖出615.04万元
- 传鸡蛋再涨价?岛内业者:黑市价格早已远超过报价基础蛋价_环球动态
- 资产负债率高的原因怎么写_资产负债率高的原因
- 当前时讯:我国科学家揭示作物主效耐碱基因 可大幅提升盐碱地综合利用水平
- 前沿资讯!《CS2》引发《CSGO》饰品价格暴涨!交易平台一度陷入崩溃无法访问
- 农行上海分行副行长朱卫峰:融资租赁行业要从“重提速”向“重提质”转变
- 防溺水三字经_世界播资讯
- 天天最资讯丨有房产证没土地证怎样解决
- 黄日涵:新媒体时代,网络达人成为年轻人新的选择-当前热闻
- 每日速看!微软推出了BingChatv96减少了答案中的幻觉
- 全球看点:乡镇中队共交流 互相学习促提升
- 环球观焦点:德赛西威:3月23日融券卖出2.83万股,融资融券余额5.25亿元
- 和讯个股快报:2023年03月24日 *ST光一 (300356),股价出现向上跳空缺口
- ChatGPT引入新第三方插件 相当于苹果的App Store时刻
- 呼和浩特市325个重点项目开复工 环球微动态
- 人民网:融资净偿还1019.39万元,融资余额6.75亿元(03-23)
- 吴磊个人资料是什么_吴磊个人简介|焦点观察
- 造车新势力交出去年成绩单,理想汽车2023年率先上岸? 快讯
- 海上利器!4000吨全回转起重船“秦航工5000”从江苏启东启航
- 苔藓 电影
- 陈浩民强吻穆婷婷我们都爱笑是哪集
- 草莓什么时候种植最好 天天即时
- 法拉第未来:FF 91Futurist 3月30日开始生产 世界热推荐
- 贵州:以重大项目助推经济社会高质量发展
- 艺术 | 山东省会大剧院:对接观众需求推动演出市场回暖
- 当前速递!海南三亚两家租车公司诈骗游客,六人被处理:三亚旅游有多乱
- 浙江正特:公司产品未出口乌克兰 但在中东地区有部分客户资源
- 每日热闻!65岁农民每月领多少钱?不同险种待遇不同-焦点速讯
- 动态:上单豹女出装(英雄联盟豹女出装)
- 2023开封汽车补贴云闪付怎么领取-热点聚焦
- 环球聚焦:纳米比亚公布2023/2024财年预算草案
- 全球新消息丨蜜雪冰城,永不塌房?
- 三国战纪2群雄争霸攻略
- 海贼王司法岛事件从几集开始的
- 共创、共享、共赢 | 立ONE·2022创新品牌挑战赛,圆满收官_重点聚焦
- 国海证券:民营炼化企业纷纷加码新材料 有望带来新一轮成长
- 世界热文:焦点科技3月23日快速回调
- 热身赛-国安2-1三镇 姜祥佑、于大宝破门 双方尽遣主力出战
- 天天热消息:高光时刻,完美呈现|阿特斯2023山东光伏展收官盘点!
- 每日报道:凉山州社保的明细流水怎么查询2023
- 世界热点评!教师资格证认定材料|教师资格证认定需要什么材料?
- 名校实习生仅3成到岗,并表示“我们以后都不当医生!”中国医学的未来靠谁撑起?谁又让医生频频转行?
- 和讯个股快报:2023年03月23日 汇嘉时代 (603101),KDJ 指标出现低位金叉信号
- 焦点热文:你的妈是批发的是什么意思
- 林书豪的父母简介|播资讯
- 世界视点!地下城与勇士好玩吗
- 环球即时看!法国鹅肝的做法
- 快看点丨打破尘封15年的男子马拉松全国纪录 何杰:曾想过放弃,去赚钱
- 通往巴黎之路,中国攀岩期待新高峰|世界焦点
- 世界七大奇迹分别是什么_世界七大奇迹
- 北方铜业(000737):第九届第十三次董事会会议决议,审议关于预计2023年度日常关联交易的议案等议案 全球独家
- 梁聪律师团队亲办:黑龙江的离婚案!
- 治水安民 兴水惠民 打造江河安澜秀水长清的美丽广东 当前独家
- 南玻A:冠隆物流拟继续增持5%至6.26%公司股份 环球观察
- 每日头条!网易云怎么抱抱
- cf游戏怎么修复,怎样才能修复穿越火线 世界独家
- 全球要闻:今日北京vs广厦:利夫可以出战 田宇翔进入大名单
- 以数字化赋能欠薪治理 重庆上线运行“渝薪码”_环球消息
- 【环球聚看点】深圳市海上世界文化艺术中心招聘工作人员(发布时间3.15)
- 天天速递!广汽本田新冠之路3月31日正式发布
- 七星关区:油菜花开春意浓 赏景增收两不误
- 世界信息:2022年河南省成人高招最低录取控制分数线
- 冰糖雪梨水的3大禁忌_冰糖雪梨水