对于返回格式为JSON
的资源或者 Restful 接口,统一采用RestTemplate
来请求,其它类型响应数据的也建议采用不同的MessageConverter
来实现,不 建议再延续使用自定义的类似HttpUtils
,HttpHelper
之类的工具类。
RestTemplate 的统一配置
根据业务场景的实际需要,全局统一配置RestTemplate
,示例代码如下:
1 |
|
使用方式
简单场景:返回普通的 String
1
2
3
4
5
6
7
8
9UriComponents uriComponents = UriComponentsBuilder.fromUriString(config.getVmsServerGateway())
.queryParam("fromUserCode", config.getVmsFromUserCode())
.queryParam("toUserCode", account)
.queryParam("msgText", content)
.queryParam("key", DigestUtils.md5Hex(config.getVmsFromUserCode() + account + config.getVmsKey())).build();
log.info("URL:{}", uriComponents.toUriString());
// Get 方法
String result = restTemplate.getForObject(uriComponents.toUriString(), String.class);格式化数据场景
1
2
3HttpEntity<MultiValueMap<String, Object>> entities = new HttpEntity<>(new HttpHeaders());
ApiResult<SearchResult> result = restTemplate.exchange(uriComponents.toUriString(), HttpMethod.POST, entities,
new ParameterizedTypeReference<ApiResult<SearchResult>>() {}).getBody();注:序列化方式依赖系统中配置的
MessageConverter