import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import java.util.Map;
/**
* REST接口客户端工具类
*
* @author yy
* @date 2018年2月13日
*/
@Component
public class RestClientUtils {
@Autowired
private RestTemplate restTemplate;
private static RestClientUtils restClientUtils;
@PostConstruct
public void init() {
restClientUtils = this;
restClientUtils.restTemplate = this.restTemplate;
}
/**
* get方式提交请求
* @param url
* 请求URL
* @param clazz
* 请求响应的类型
* @param urlVariables
* URL变量列表
* @return
*/
public static <T> T getForObject(String url, Class<T> clazz, Map<String, Object> urlVariables) {
return restClientUtils.restTemplate.getForObject(url, clazz, urlVariables);
}
/**
* post方式提交请求并且携带header信息
* @param url
* 请求URL
* @param headsMap
* 携带的HTTP Header参数列表
* @param body
* 消息体
* @return
*/
public static String postForObject(String url, Map<String, String> headsMap, String body) {
HttpHeaders headers = new HttpHeaders();
for (String key : headsMap.keySet()) {
headers.add(key, headsMap.get(key));
}
HttpEntity<String> httpEntity = new HttpEntity<String>(body, headers);
String result = restClientUtils.restTemplate.postForObject(url, httpEntity, String.class);
return result;
}
/**
* post方式提交请求并且携带header信息
* @param url
* 请求URL
* @param headsMap
* 携带的HTTP Header参数列表
* @param body
* 消息体
* @return
*/
public static String getForObject(String url, Map<String, String> headsMap, String body) {
HttpHeaders headers = new HttpHeaders();
for (String key : headsMap.keySet()) {
headers.add(key, headsMap.get(key));
}
HttpEntity<String> httpEntity = new HttpEntity<String>(body, headers);
String result = restClientUtils.restTemplate.getForObject(url, String.class);
return result;
}
/**
* post方式提交请求
* @param url
* 请求URL
* @param body
* 消息体
* @return
*/
public static String postForString(String url, String body) {
HttpHeaders headers = new HttpHeaders();
//setAccessToken(headers,request);
MediaType type = MediaType
.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("accessType","1");
HttpEntity<String> formEntity = new HttpEntity<String>(body, headers);
String result = restClientUtils.restTemplate.postForObject(url, formEntity,
String.class);
if (result == null)
return null;
return result;
}
}