RestTemplate以更优雅的代码结构进行http请求。在post请求中,总会遇到参数和body同是请求的情况。其实post的请求大体上可以分为 header、query、body。
所以解决问题的思路就是三部分分别设置参数。
Map body = new HashMap();
body.put("1","1");
body.put("2",2);
String jsonData = JSON.toJSONString(body);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("1", 1);
map.add("2", "2");
map.add("3", "3");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> request = new HttpEntity<>(jsonData, headers);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(Url + "/rack").queryParams(map);
ResponseEntity<JSONObject> responseEntity = template.postForEntity(builder.toUriString(), request, JSONObject.class);
System.out.println(builder.toUriString());
System.out.println(responseEntity);