RestTemplate 在非Spring环境下使用,发送Post请求缺失请求体
public static void main(String[] args) throws JsonProcessingException {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
// 创建请求体对象
Framework framework = new Framework();
framework.setName("Servicecomb");
framework.setVersion("");
Service service = new Service();
service.setAppId("test");
service.setDescription("");
service.setEnvironment("development");
service.setServiceName("test");
service.setVersion("0.0.1");
service.setFramework(framework);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(service);
// 构建请求实体
HttpEntity<String> entity = new HttpEntity<>(json, headers);
// 发送POST请求
ResponseEntity<String> response = restTemplate.postForEntity(
"http://localhost:30103/api/v4/default/registry/microservices",
entity,
String.class
);
// 处理响应
System.out.println(response.getBody());
}
报错
Exception in thread "main" org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: "{"errorCode":"400001","errorMessage":"Invalid parameter(s)","detail":"Request body is empty"}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:103)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:183)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:137)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:932)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:881)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:781)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:529)
at com.cll.jtool.app.config.Test.main(Test.java:45)
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>