gpt4 book ai didi

java - restTemplate 删除与正文

转载 作者:行者123 更新时间:2023-12-04 00:10:18 35 4
gpt4 key购买 nike

我正在尝试对请求正文执行 DELETE,但我不断收到 400(错误请求)错误。当我在 swagger/postman 中这样做时,它成功地删除了记录。但是从 Java 代码我不能这样做

外部 API 的设计方式需要正文和 URL。它不能改变。请让我知道如何删除带有请求正文的条目

public Person delete(Person person, String url, Map<String, String> uriVariables) throws JsonProcessingException {
RestTemplate restTemplate = new RestTemplate();
CustomObjectMapper mapper = new CustomObjectMapper();
HttpEntity<Person> requestEntity = new HttpEntity<Person>(person);
try {
ResponseEntity<Person> responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Person.class, uriVariables);
return responseEntity.getBody();
} catch (RestClientException e) {
System.out.println(mapper.writeValueAsString(person));
throw e;
}
}

当它出现异常时,我会以 JSON 格式获取 JSON 请求,并且在 Swagger/postman 中同样可以正常工作

我做了一些谷歌搜索,发现restTemplate在有请求正文时删除有问题。这篇文章没有帮助 https://jira.spring.io/browse/SPR-12361有没有办法让它工作

最佳答案

解决此问题的另一种方法是使用 restTemplate.exchange ,这是一个例子:


try {
String jsonPayload = GSON.toJson(request);
HttpEntity<String> entity = new HttpEntity<String>(jsonPayload.toString(),headers());
ResponseEntity resp = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class);
} catch (HttpClientErrorException e) {
/* Handle error */
}

这个解决方案的好处是你可以将它与所有 HttpMethod 类型一起使用。

关于java - restTemplate 删除与正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899641/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com