RestTemplate post请求方式主要分为下面几种:
一、postForObject
RestTemplate template = new RestTemplate();
String url = "http://localhost/test";
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("name", "xxx");
Map respnose = template.postForObject(url, paramMap, Map.class);
Assert.assertNotNull(respnose);
二、postForEntity
RestTemplate template = new RestTemplate();
String url = "http://localhost/test";
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("name", "xxx");
HttpHeaders headers = new HttpHeaders();
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap,headers);
ResponseEntity<Map> response2 = template.postForEntity(url, httpEntity, Map.class);
Assert.assertEquals(getStatusCode,200);
三、exchange
RestTemplate template = new RestTemplate();
String url = "http://localhost/test";
MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
paramMap.add("name", "xxx");
ResponseEntity<Map> response3 = template.exchange(url, HttpMethod.POST, httpEntity, Map.class);
Assert.assertEquals(getStatusCode,200);
package com.atguli.common.demo;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
/**
* User: ldj
* Date: 2022/3/25
* Time: 1:30
* Description: restTemplate
*/
@Slf4j
public class RestTemplateDemo {
public static void main(String[] args) throws JsonProcessingException {
String url = "http://locahost:8080/test";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
ArrayList<Object> similarList = new ArrayList<>();
similarList.add("1");
similarList.add("2");
similarList.add("3");
JSONObject requestMap = new JSONObject();
requestMap.put("name", "ldj");
requestMap.put("age", "15");
requestMap.put("similarList",similarList);
HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
ObjectMapper objectMapper = new ObjectMapper();
try {
String similarJSON = objectMapper.writeValueAsString(requestMap);
log.info("similarJSON:{}",similarJSON);
} catch (Exception e) {
e.printStackTrace();
}
//使用JSONObject,不需要创建实体类VO来接受返参,缺点是别人不知道里面有哪些字段,即不知道有那些key
JSONObject body1 = restTemplate.postForObject(url, entity, JSONObject.class);
log.info("body1:{}",objectMapper.writeValueAsString(body1));
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, requestMap, JSONObject.class);
JSONObject body2 = responseEntity.getBody(); //响应体
HttpStatus statusCode = responseEntity.getStatusCode(); //状态码
HttpHeaders headers1 = responseEntity.getHeaders();//获取到头信息
}
}