【发布时间】:2016-08-22 07:56:17
【问题描述】:
我正在尝试对请求正文执行 DELETE,但我不断收到 400(错误请求)错误。当我在招摇/邮递员中这样做时,它成功删除了记录。但是从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 有什么办法让它工作
【问题讨论】:
-
您已经在
requestEntity中有一个请求正文。检查您的 API 并查看它的预期。然后检查你的身体是否序列化到你所期望的。 -
请求正文相同。同一机构正在为 POST 和 PUT 工作。从具有相同值的 swagger UI 中删除工作正常,但在 java 代码中失败
-
这里没有足够的细节让我们帮助您。向我们展示 Swagger 通过网络发送的内容。向我们展示
RestTemplate示例发送的内容。到那时,您可能会自己找到答案。 -
我做了 CustomObjectMapper mapper = new CustomObjectMapper();和调试 mapper.writeValueAsString(person) 和 java 代码登录的相同请求在 Swagger UI 中工作正常。想知道会是什么问题
-
您链接到的错误是不言自明的。 java
标签: java spring rest resttemplate spring-rest