@Autowired
private RestTemplate restTemplate;
//通过restTemplate post传递map方法 接口返回一个int类型
public void longRangeTest(){
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
StringBuilder url = new StringBuilder("http://localhost:8889/longRangTest");
Map<String,Object> map = merge.findById("590fe009d09e9833a46185c7");
map.put("_id",map.get("_id").toString());
map.put("_tableName","MergeCommunity");
JSONObject jsonObj = JSONObject.fromObject(map);
HttpEntity<String> formEntity = new HttpEntity<>(jsonObj.toString(), headers);
System.err.println("返回:"+restTemplate.postForObject(url.toString(), formEntity , int.class));
}
@Scheduled(fixedRate = 1000*3*5)
@Async
public void getInAndOutParkingInfoByIsAddeda() {
Resp2 resp2 = parkingApiService.getInAndOutParkingInfoByIsAdded();
Resp3 resp3 = new Resp3(resp2.getData());
if(resp2.getData()!=null) {
//把resp推送给其它接口
RestTemplate restTemplate = new RestTemplate();
// String url = "http://61.150.12.244:9851/gjdd_xiongan/carParkControl/carDataRepair";
String url = "http://localhost:7008/openWork/user/test4";
ResponseEntity<Map> map = restTemplate.postForEntity(url, resp3, Map.class);
System.out.println("message:"+map.getBody().get("message"));
}
}
-Post请求
在RestTempalte中,对POST请求时可以通过如下三个方法进行调用
--第一种:postForEntity()函数
解析:该方法与Get请求中的getForEntity()函数类似,返回ResponseEntity<T>对象,其中T为请求响应的body类型。
例如:
RestTemplate restTemplate = new RestTempalte();
User user = new User("didi", 30);
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://USER-SERVICE/user",
user, String);
String body = responseEntity.getBody();
三个重载方法:
1.postForEntity(String url, Object request, Class<T> responseType, Object... uriVariables)
2.postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
3.postForEntity(URI url, Object request, Class<T> responseType)
解析:重载函数中的uriVariables用来对url中的参数进行绑定,responseType参数是对请求响应的body内容的类型定
义
注意:新增的request参数,改参数可以是一个普通的对象,也可以是一个HttpEntity对象。
如果request是一个普通对象时,RestTemplate会将这个普通对象转换成HttpEntity对象来处理,其中Object就是
request的类型,request内容会被当成一个完整的body来处理;
如果resuqet是一个HttpEntity对象时,那么request会被当成一个完整的HTTP请求对象来处理,这个request中不
仅包含了body内容,也包含了header的内容
--第二种:postForObject()函数
解析:它简化了postForEntity()的后续处理,通过直接将请求响应的body内容包装陈对象来简化返回使用。
例如:
RestTemplate restTemplate = new RestTemplate();
User user = new User("didi", 20);
String postResult = restTemplate.postForObject("http[://USER-SERVICE/user", user, String.class);
三个重载方法:
postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)
postForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
postForObject(URI url, Object request, Class<T> responseType)
解析:参考postForEntity说明