【资料图】
原文链接
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; }}
标签:
据彭博社5月31日报道,万达集团计划以10亿元人民币(约合1 41亿美元)出售其数字支付牌照,正在与包括字节
当月要点:1、拿地总额同比下降8 4%,降幅近一步收窄2、城市选择高度集中,民营房企加速回归3、从各城市群
5月31日北向资金增持20 22万股招商港口。近5个交易日中,获北向资金减持的有2天,累计净减持2 08万股。近20
1、一般有以下几种帐户:基本户。2、企业必须开基本户,否则不能开其他银行帐户,基本户可以存取现金、划
1、Aninter-miningMingyueforyourviewing,weaveacoolautu
来为大家解答以下的问题,面石膏板防火等级耐火时间,纸面石膏板防火等级这个很多人还不知道,现在让我们一
5月31日,国家统计局服务业调查中心和中国物流与采购联合会公布的数据显示,5月制造业采购经理指数(PMI)
马斯克又来上海了。上证报记者获悉,5月31日晚间,特斯拉CEO埃隆& 183;马斯克(ElonMusk)按计划抵达上海。
直播吧5月31日讯据意大利记者罗马诺透露,吉达联合为本泽马开出接近1亿欧的年薪,皇马正等待球员做出决定。
新华社杭州5月31日电(记者顾小立)记者31日从浙江省经信厅获悉,浙江将加快推进5G全连接工厂建设,进一步
同一部智能手机对于有着不同需求的使用者来说,意义可能大不相同。职场人心目中的理想型智能手机,应该是在
1、建议你不要买长安车,长安车怠速不好治。2、水温高也不好治,另外长安车便宜。3、建议你买车之前也去看
1,云南有许多不知名但却非常美的小城,这需要你去发现,而不是只要提起云南就是大理丽江,烦死了。老实说
澳大利亚昆士兰大学MBA秋季学期,申请截止于每年5月31日左右。春季学期,申请截止于每年11月30日左右。需要
《乘风2023》成团夜时间曝光,复活赛时间已定,3位姐姐有望复活,陈冰,复活赛,汪小敏,许靖韵,李莎旻子,乘风2023
这个是没有准确答案的,要根据自己的实际需求和经济能力来决定。江城安心保和百万医疗险都是比较优秀的医疗
现代快报网是由凤凰出版传媒集团旗下的现代快报倾力打造的江苏新闻门户网站,目前在南京、苏州、无锡、常州
含饴弄孙,颐养天年,这是很多退休老人的选择。可在江西省南昌市进贤县前坊镇太平村西湖李家村,有四位退休
前不久,万州区钟鼓楼街道棉花地社区多个小区停车难问题得以化解,楼院停车有序了、出行也方便了、邻里更和
迈尔斯为勇士王朝的建立付出了巨大的努力迈尔斯的离职对于勇士队而迈尔斯则不同除了在体育行业最受追捧之外
X 关闭
X 关闭