restTemplate 传递map

mac2024-12-07  50

@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说明

 

最新回复(0)