【资料图】
原文链接
GitHub项目地址
Gitee项目地址
本文介绍restTemplate基础用法。
Java中get和post的用法请参考:Java中Get和Post的使用
@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(); }}
@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; }}
使用restTemplate调用get/post接口。
getForObject()
:返回值是HTTP
协议的响应体getForEntity()
:返回的是ResponseEntity
,ResponseEntity
是对HTTP
响应的封装,除了包含响应体,还包含HTTP
状态码、contentType、contentLength、Header
等信息@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(); }}
@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; }}
标签:
【携手上海时装周时尚周末,引领时尚潮流新趋势】上海时装周的影响力正在不断扩大,并成为上海这座城市和中国时尚产业链接全球的名片和代表
“康健说”公益讲座走进校园普及心理健康知识2023年09月09日14:50中国网财经
点击标题下「河北新闻广播」可快速关注昨晚开始,我省迎来新一场降雨。
六漫村在大多数市民看来词语“六漫”和“辣椒”毫不相关但是在龙胜各族
教师节前夕这位老师捐髓救学生
02:21如果用一个词来形容王建涛的经历,那就是“逆袭”。王建涛生于197
近期,网友爆料小米即将发布的全新智能手表,可能命名为小米Watch2Pro
截至2023年9月8日收盘,昊华科技(600378)报收于34 02元,下跌0 53%,换
他为火箭队搭建的阵容似乎有些过于年轻化,在今年的休赛期,他们先后和
来源:参考消息网参考消息网9月8日报道据法新社9月6日报道,一项研究6
9月8日,外交部发言人毛宁就美国对华为手机芯片展开调查一事回答媒体问
【深圳一商贩激流中淡定卖炒饭】7日晚,受暴雨侵袭,深圳多个路段出现
就在刚刚!局势突变,国际传来六个消息,巴西,海盗,索马里,大堡礁,珊瑚
自2014年5月住房和城乡建设部印发《智慧社区建设指南(试行)》开始,中
男人怎样通过吃来补肾,大虾、韭菜等阳性食物?1、第一:如果是肾阳虚
以下是幸福蓝海在北京时间9月8日13:55分盘口异动快照:9月8日,幸福蓝
沙钞!足球报:斯坦丘税后年薪200万欧+奖金条款,高于在中超收入,国民,
,你们好,今天0471房产来聊聊一篇伦星光,伦星光简述的文章,网友们对
2023秋季全国中小学消防安全公开课9月8日15时,2023年秋季全国中小学消
安徽池州市应急管理局9月7日通报3起建筑施工领域事故,3起事故前后在近
1、好像有的可以改。2、有的不可以;要根据文件而定;也就是说有的文件
走进沉浸式文旅新场景:拓展体验空间,挖掘消费潜力-
滁州市人民代表大会常务委员会任命人员名单(2023年8月30日滁州市第七
朗科科技8月31日在投资者互动平台表示,公司看好存储行业前景,积极围
导读1、能吸引人的才会有下一页。本文到此讲解完毕了,希望对大家有帮
8月30日,贵州首个综合性指定监管场地—贵阳龙洞堡国际机场综合指定监
体坛加,体坛+,艾迪,美网,张之臻,吴易昺,王欣瑜,朱琳,从张之臻到中国军
“庆丰收、促和美”,第六个“中国农民丰收节”将在9月23日农历秋分如
驾驶证期满换证方式如下:根据《机动车驾驶证申领和使用规定》162号令
对此,《足球报》这样写道:“根据时间点来看,足协杯半决赛与亚运会男
Copyright © 2015-2022 大河服装网版权所有 备案号:京ICP备2022022245号-75 联系邮箱:435 226 40@qq.com