世界热讯: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; }} 关键词:
推荐阅读
证券之星讯,根据3月24日市场公开信息、上市公司公告及交易所披露数据整理,乐心医疗(300562)最新董监高及相关人员股份变动情况:2023年3月2
2023-03-24 20:09:58
1、鸽子1、鸽子,在世界各地广泛饲养,和人类伴居已有上千年的历史,考古学家发现鸽子来自于公元前3000年的伊拉克。2、鸽
2023-03-24 19:05:13
企鹅不属于哺乳动物,企鹅是卵生,不哺乳,所以它不是哺乳动物,只能是鸟类。企鹅是恒温动物,恒温动物只有两种:鸟类和哺乳动物。企鹅:有“
2023-03-24 18:05:30
电解锰 需求弱势电解锰价格继续小幅下跌 本周,电解锰国内市场行情继续弱势运行。目前,国内主要报价15000-15200元 吨。国内出口报价220
2023-03-24 17:22:50
近日,在海口海关所属八所海关的监管下,东方祥麟菜果基地有限公司的85箱“储良”龙眼,从大田镇祥麟公司水果种植分基地出口到北美市场。据悉
2023-03-24 14:48:50
事闹大了,美政府欲禁止航班,中国首当其冲,西方36国领空被关闭,航班,中国,美国,领空,飞越,俄罗斯,美政府
2023-03-24 13:21:32
每经AI快讯,金丹科技(SZ300829,最新价:23 74元)3月24日午间发布公告称,关于向不特定对象发行可转换公
2023-03-24 12:04:28
1、《独坐敬亭山》是唐代伟大诗人李白创作的一首五绝,是诗人表现自己精神世界的佳作。2、此诗表面是写独游敬亭山的情趣,而其深含之意则是诗
2023-03-24 10:32:37
一、广西壮族自治区梧州市天气预报1、蒙山县气象台2023年3月24日4时53分继续发布雷电黄色预警信号。2、目前雷雨云团
2023-03-24 09:46:44
赤子城科技(09911)发布截至2022年12月31日止年度业绩,该集团取得客户合约收入人民币28亿元(单位下同),同比增加18 64%;公司拥有人应占利润1
2023-03-24 08:45:01
詹姆斯本人回应复出传言!晒悠闲吹口哨一幕黑贝吐槽老詹没防守,湖人,科比,乔丹,库里,黑贝,勒布朗詹姆斯,帕特里克·贝弗利,詹姆斯(塞文子爵)
2023-03-24 06:12:36
欢迎观看本篇文章,小勉来为大家解答以上问题。薛宝钗的性格有什么特点,薛宝钗的典型性格特点是什么呢很多人还不知道,现在让我
2023-03-24 01:59:16
本周OPPO举行了全新影像旗舰FindX6系列的新品发布会,这款产品一发布就获得了一致好评,尤其是FindX6Pro其配备的超光影三主摄引领移动影像进入
2023-03-23 22:10:07
1、中国最大的湖:青海湖(面积:4583平方千米)。藏语名为“措温布”(意为“青色的海”)。位于青藏高原东北部、青海省境内,中国最大的内陆湖
2023-03-23 21:32:21
山东海化(000822)(000822):2022年营业收入97 12亿元,与上期同比增加44 7%3月23日,山东海化2022年年报显示,本期营业收
2023-03-23 20:32:42
《星岛申诉王》昨日(22日)独家报导,直击长沙湾一间诊所外出现疑似炒药党,怀疑有人非法买卖一款需经医生处方的减肥药物Panbesy。
2023-03-23 18:54:41
资讯
品牌










