我在使用RestTemplate时遇到了一个奇怪的问题。我正在使用某个REST API,我想用PUT方法更新其中的一些内容。 因此,在例如Postman中,我发送了以下请求:
PUT http://fake/foobar/c/123 with a certain body
使用Postman更新成功。如果我现在通过RestTemplate
在Java中执行相同的调用,我将得到一个405方法不允许的错误:
HttpHeaders headers = createHeader();
HttpEntity<Offer> httpEntity = new HttpEntity<>(bodyEntity, headers);
String url = "http://fake/foobar/c/123"; //Created dynamically, but here pasted for sake of simplicity
RestTemplate restTemplate = new RestTemplate(...);
ResponseEntity<OfferResponse> response = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, OfferResponse.class);
...
我一再比较了URL。如果我将控制台中记录的URL复制并粘贴到Postman中,我就能成功更新。我还比较了头文件和其他所有内容。与通过Postman进行操作时一样,所有东西都是相等的。
是否还有可能存在其他原因导致这种行为呢(除了我太愚蠢,无法比较头文件等内容并错过了什么)?针对此API的其他PUT、POST调用等功能正常,否则我会认为我的RestTemplate使用有普遍问题。