我正在使用 Postman 调用 REST API,它使用以下请求给出了成功的响应(200 OK),
方法:POST
授权=> 类型:不记名令牌=> 代币:saflsjdflj
身体=> 表单数据 => 关键:公司ID, 价值:123456
但是当我在 Spring Boot 中使用 Rest 模板调用这个 api 时,它给出了 400 错误请求。代码如下所示,
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + token);
HashMap<String, String> requestBody = new HashMap<>();
requestBody.put("companyId", "123456");
HttpEntity requestEntity = new HttpEntity<>(requestBody, headers)
ResponseEntity<CompanyResponse> response = restTemplate.exchange(uri, HttpMethod.POST, requestEntity, CompanyResponse.class);
你必须配置restTemplate:添加FormHttpMessageConverter
RestTemplate restTemplate = new RestTemplateBuilder()
.messageConverters(
new MappingJackson2HttpMessageConverter(objectMapper()),
new FormHttpMessageConverter())
.build()
发送请求时,您必须将
MediaType.APPLICATION_FORM_URLENCODED
设置为 contentType 并使用 MultiValueMap
而不是 HashMap
作为请求正文:
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + token);
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.put("companyId", "123456");
HttpEntity requestEntity = new HttpEntity<>(requestBody, headers)
ResponseEntity<CompanyResponse> response = restTemplate.exchange(uri, HttpMethod.POST, requestEntity, CompanyResponse.class);