一、配置引入
/**
* 配置restTemplate各项参数
* @author 76519
*
*/
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);//单位为ms//响应超时时间
factory.setConnectTimeout(5000);//单位为ms//连接超时时间
return factory;
}
}
二、使用
/**
* 复杂的请求方式
* @param restTemplate
* @param url 地址信息
* @param method 请求方式
* @param mapData 请求数据
* @param authorizationVal 请求头部传递信息
* @return
*/
public static ResponseEntity restTemplateRequest(
RestTemplate restTemplate,
String url,
HttpMethod method,
Map mapData,
String authorizationVal){
ResponseEntity<JSONObject> responseEntity = null;
HttpEntity<Map> entity = null;
try {
if(!StringUtils.isNull(authorizationVal)){
//存在需要headers中传递数据
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", authorizationVal);
entity = new HttpEntity<Map>(mapData, headers);
}else{
entity = new HttpEntity<Map>(mapData);
}
responseEntity = restTemplate.exchange(url, method, entity, JSONObject.class);
} catch (Exception e) {
log.info("----->"+e);
}
return responseEntity;
}
StringUtils中的方法
public static boolean isNull(Object str){
return str == null || str == "" || str == "null";
}
上面的封装请求方式支持headers中携带token信息,同时支持其他信息的传递操作。