在项目开发的过程中,会有很多时候需要调用其他项目的一些接口,此时大家也许会想到使用Webservice 实现,但是这种方式实现起来很麻烦。现在为大家介绍一种更加方便,更加简洁的远程接口调用方式:RestTemplate。
远程调用接口的使用场景是A系统需要调用B系统的系统资源,那么此时需要在A系统中有B系统的调用接口,采用传统的Webservice需要单独为接口服务开启一个服务,但是如果采用Spring的RestTemplate接口调用方式的话,只需要在已有的A系统中添加几行代码就可以实现,B系统是不需要额外做其他的代码变动。
RestTemplate rest = new RestTemplate();
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
Set<Map.Entry<String, Object> > map = requestMap.entrySet();
for (Entry<String, Object> entry : map) {
param.add(entry.getKey(), entry.getValue());
}
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(
param, headers);
ResponseEntity<String> responseEntity;
try {
responseEntity = rest .exchange(url,
HttpMethod.POST, httpEntity, String.class);
} catch (RestClientException e) {
if(e instanceof HttpServerErrorException){
return ((HttpServerErrorException) e).getResponseBodyAsString();
}
e.printStackTrace();
return "{\"message\":\"远程服务调用!\",\"status\":500}";
}
log.debug("code:"+responseEntity.getStatusCode());
以上代码就是完整的Spring的RestTemplate调用,是不是很简单?可以传对象,也可以传json字符串,很方便吧。
来源:oschina
链接:https://my.oschina.net/u/1458793/blog/423389