(二)Java版接口自动化-使用springboot的RestTemplate请求HTTP的get,post
一、背景和介绍
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
HTTP请求方法:
(1)GET:通过请求URI得到资源
(2)POST:用于添加新的内容
(3)PUT:用于修改某个内容,若不存在则添加
(4)DELETE:删除某个内容
二、封装调用get,post请求接口
1、调用get接口
使用RestTemplate的exchange指定调用方式,GET 请求添加header头和 多个参数,封装
/** * getForObject * @param url * @param map * @param token * @return * @throws Exception */ public static String getForObject(String url, Mapmap, String token) throws Exception{ RestTemplate restTemplate = new RestTemplate(); //设置请求头的token HttpHeaders headers = new HttpHeaders(); headers.set("token", token); HttpEntity request = new HttpEntity<>(headers); //参数拼接到URL上,生成get的链接 StringBuffer stringBuffer = new StringBuffer(url); if (map instanceof Map) { Iterator iterator = ((Map) map).entrySet().iterator(); if (iterator.hasNext()) { stringBuffer.append("?"); Object element; while (iterator.hasNext()) { element = iterator.next(); Map.Entry entry = (Map.Entry) element; //过滤value为null,value为null时进行拼接字符串会变成 "null"字符串 if (entry.getValue() != null) { stringBuffer.append(element).append("&"); } url = stringBuffer.substring(0, stringBuffer.length() - 1); } } } else { throw new RuntimeException("url请求:" + url + "请求参数有误不是map类型"); } //返回响应结果 ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, request, String.class, map); System.out.println("打印response:" + response); return response.getBody(); }
2、调用post接口
请求保护token,params
/** *postForObject请求,入参包括:URL,map,token * @param url * @param map * @param token * @return */ public static String postForObject(String url, Mapmap, String token) throws Exception{ RestTemplate restTemplate = new RestTemplate(); //设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("token",token);//设置token,没有token去掉即可 HttpEntity
3、测试调用
package com.automation.interfacetest; import com.automation.interfacetest.base.RestTemplateRequest; import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; public class HttpRequestTest { String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzMzY4NzYwNTA4MTIyMzk4NzJBdGNlLVNGdk93LW5JVXBVd2RqTU43aEhTVUNoQmdmQW0ybzZQd1ZvUVVJTCIsImlhdCI6MTY0MTgwMDU0OCwic3ViIjoie1widXNlcklkXCI6XCIzMzY4NzYwNTA4MTIyMzk4NzJcIixcImFjY291bnRJZFwiOlwiMzM2ODc2MDUwODMzMjExMzkyXCIsXCJ1c2VyVHlwZVwiOjAsXCJhcHBDb2RlXCI6XCJIWEdZQVBQXCIsXCJjaGFubmVsQ29kZVwiOlwiUEFUSUVOVF9BTkRST0lEXCIsXCJkZXZpY2VudW1iZXJcIjpcIkF0Y2UtU0Z2T3ctbklVcFV3ZGpNTjdoSFNVQ2hCZ2ZBbTJvNlB3Vm9RVUlMXCIsXCJkZXZpY2VUeXBlXCI6XCJBUFBcIixcImFjY291bnROb1wiOlwiMTg2ODM1NzExMzFcIixcIm5hbWVcIjpudWxsLFwiZG9jdG9ySWRcIjpudWxsLFwib3JnYW5Db2RlXCI6bnVsbH0iLCJleHAiOjE2NDQzOTI1NDh9.stJ5I55clqbhIYzoIEMfmWyz5F4LWGUIfIY-ktFjcos***HXGYAPP"; @Test public void rtPostForObject() throws Exception{ String url = "https://hxgyapipre.cd120.info/cloud/hosplatcustomer/cardservice/cardlist"; Mapmap= new HashMap<>(); map.put("appCode", "HXGYAPP"); map.put("organCode", "MS0101"); map.put("channelCode", "PATIENT_ANDROID"); map.put("guidance", "0"); String result = RestTemplateRequest.postForObject(url, map, token); System.out.println("输出返回结果:" + result); } @Test public void rtGetForEntity() throws Exception{ String url = "https://hxgyapipre.cd120.info/cloud/imagecloud/imageconfig/getimageconfig"; Map map = new HashMap<>(); map.put("hisCode", "SL0101"); String result = RestTemplateRequest.getForObject(url, map, token); System.out.println("输出返回结果:" + result); } }
参考文章:
https://www.javazhiyin.com/19714.html#comment-345