一、引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
二、RestTemplateUtils工具类
public class RestTemplateUtils {
private static final RestTemplate restTemplate = new RestTemplate();
public static <T> ResponseEntity<T> get(String url, Class<T> responseType) {
return restTemplate.getForEntity(url, responseType);
}
public static <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... params) {
return restTemplate.getForEntity(url, responseType, params);
}
public static <T> ResponseEntity<T> get(String url, Class<T> responseType, Map<String, ?> params) {
return restTemplate.getForEntity(url, responseType, params);
}
public static <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Object... params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return get(url, httpHeaders, responseType, params);
}
public static <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Object... params) {
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
return exchange(url, HttpMethod.GET, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> get(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return get(url, httpHeaders, responseType, params);
}
public static <T> ResponseEntity<T> get(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> params) {
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
return exchange(url, HttpMethod.GET, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, Class<T> responseType) {
return restTemplate.postForEntity(url, HttpEntity.EMPTY, responseType);
}
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
return restTemplate.postForEntity(url, requestBody, responseType);
}
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... params) {
return restTemplate.postForEntity(url, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> params) {
return restTemplate.postForEntity(url, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return post(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return post(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return post(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return post(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... params) {
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> post(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> params) {
return restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, Class<T> responseType, Object... params) {
return put(url, HttpEntity.EMPTY, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return put(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return put(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return put(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return put(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return put(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return put(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... params) {
return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> put(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> params) {
return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Class<T> responseType, Object... params) {
return delete(url, HttpEntity.EMPTY, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Class<T> responseType, Map<String, ?> params) {
return delete(url, HttpEntity.EMPTY, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Object... params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Class<T> responseType, Map<String, ?> params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Object... params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Object... params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, Map<String, String> headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setAll(headers);
return delete(url, httpHeaders, requestBody, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpHeaders headers, Object requestBody, Class<T> responseType, Map<String, ?> params) {
HttpEntity<Object> requestEntity = new HttpEntity<Object>(requestBody, headers);
return delete(url, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Object... params) {
return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> delete(String url, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> params) {
return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... params) {
return restTemplate.exchange(url, method, requestEntity, responseType, params);
}
public static <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> params) {
return restTemplate.exchange(url, method, requestEntity, responseType, params);
}
public static RestTemplate getRestTemplate() {
return restTemplate;
}
}
三、测试
@Resource
private RestTemplate restTemplate;
public String getTest1(String orderNo, DataSourceEnum dataSource, K3UpdateFlagEnum flag){
String url = k3ServiceConfig.getIp() + k3ServiceConfig.getWwckStartOrCancelStock()
+ "?FBillNo=" + orderNo + "&Flag=" + flag.getCode() + "&sysSource=" + dataSource.getValue();
String result;
try {
result= restTemplate.getForObject(url , String.class);
} catch (RestClientException e) {
log.error(e.getMessage());
throw new BaseException("网络异常");
}
return result;
}
public String getTest2(Long id){
String url = "http://localhost:6666/gettest/?id={id}";
Map<String,Object> map = Maps.newHashMap();
String result;
map.put("id",id);
try {
result = restTemplate.getForObject(url, String.class,map);
} catch (RestClientException e) {
log.error(e.getMessage());
throw new BaseException("网络异常");
}
return result;
}
public String postTest1(String id) {
String url = "http://localhost:6666/posttest/?id=1";
String result;
try {
result = restTemplate.postForObject(url, null, String.class);
} catch (RestClientException e) {
throw new RuntimeException("网络异常");
}
return result;
}
@PostMapping("/post2")
public String postTest2(@RequestParam String id) {
String url = "http://localhost:6666/posttest/?id={id}";
Map<String, Object> map = Maps.newHashMap();
map.put("id", id);
String result;
try {
result = restTemplate.postForObject(url, null, String.class, map);
} catch (RestClientException e) {
throw new RuntimeException("网络异常");
}
return result;
}
public String postTest2(Long id) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("id", id);
HttpEntity<LinkedMultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.postForEntity("url", request, String.class);
} catch (Exception e) {
throw new RuntimeException("网络异常");
}
return responseEntity.getBody();
}