使用场景
通常在写定时任务的时候,会要求从另一个平台的接口读取数据回来,同步更新当前项目的数据
简便的post/get请求写法
/**
import org.springframework.web.client.RestTemplate;
@Autowired
private RestTemplate restTemplate;
*/
String url = "http://127.0.0.0:8080/xxx/xxx";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.valueOf("application/json;charset=UTF-8"));
// 组装请求信息
HttpEntity<List<String>> httpEntity=new HttpEntity<>(paramList,headers);
List<PestDeviceDepartRelation> list = null;
try{
if(paramList != null && !paramList.isEmpty()){
JSONObject jsonObject = restTemplate.postForObject(url, httpEntity, JSONObject.class);
JSONArray jsonArray = jsonObject.getJSONArray("result");
list = jsonArray.toJavaList(PestDeviceDepartRelation.class);
log.debug("发送查询xx信息请求消息应答:"+list.toString());
}
}catch (HttpClientErrorException e){
log.debug("访问查询xx信息接口发生异常:",e);
String resBody = e.getResponseBodyAsString();
log.info("访问查询xx信息接口返回:", resBody);
}
当请求需要token校验时
try{
//先获取token
JSONObject tokenObject = restTemplate.getForObject(getTokenUrl, JSONObject.class);
log.debug("发送获取token请求消息应答:" + tokenObject);
String token = tokenObject.getString("data");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Content-Type", "application/json;charset=UTF-8");
httpHeaders.add("Authorization", token);
//获取信息列表
HttpEntity<MultiValueMap<String, Object>> meterDeviceEntity = new HttpEntity<MultiValueMap<String, Object>>(httpHeaders);
ResponseEntity<JSONObject> meterDeviceResponseEntity = restTemplate.exchange(getMeterListUrl, HttpMethod.GET, meterDeviceEntity, JSONObject.class);
JSONObject meterDeviceObject = meterDeviceResponseEntity.getBody();
log.debug("发送查询信息请求消息应答:" + meterDeviceObject);
JSONArray meterDeviceJsonArray = meterDeviceObject.getJSONArray("data");
List<FmMeterDevice> meterDeviceList = meterDeviceJsonArray.toJavaList(FmMeterDevice.class);
情景三 无token校验get请求拼接参数
HttpEntity<MultiValueMap<String, Object>> requestMeterDataEntity = new HttpEntity<>(httpHeaders);
ResponseEntity<JSONObject> meterDataResponseEntity = restTemplate.exchange(
getMeterDataListUrl+"?beginTime="+beginTime+"&endTime="+endTime,
HttpMethod.GET, requestMeterDataEntity, JSONObject.class);
JSONObject meterDataObject = meterDataResponseEntity.getBody();
log.debug("发送查询水表数据列表请求消息应答:" + meterDataObject);
JSONArray meterDataJsonArray = meterDataObject.getJSONArray("data");
List<FmMeterData> meterDataList = meterDataJsonArray.toJavaList(FmMeterData.class);