0
我用彈簧1.4.3Resttemplate和補丁,無效
我嘗試調用Web服務
@PatchMapping(value = "/members/{memberId}/card")
public ResponseEntity updateMemberCardId(@PathVariable("memberId") Long memberId, @RequestBody String cardId) throws ResourceNotFoundException {
memberService.updateMemberCardId(cardId, memberId);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
在我的應用程序,
@Component
@Configuration
public class ClientRestConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder, @Value("${main.server.url}") String mainServerUrl, @Value("${commerce.username}") String commerceUsername, @Value("${commerce.password}") String commercePassword, @Value("${connection.timeout}") int timeout) {
return builder.setConnectTimeout(timeout).setReadTimeout(timeout).basicAuthorization(commerceUsername, commercePassword).rootUri(mainServerUrl).build();
}
}
在另一種方法我做
String cardId = "123456789";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(cardId, headers);
ResponseEntity responseEntity = restTemplate.patchForObject("/rest/members/1/card", entity, ResponseEntity.class);
我得到這個錯誤
java.net.ProtocolException:無效HTTP方法:在PATCH java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:440) 〜[NA:1.8.0_111]在 sun.net.www。 protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:552) 〜[NA:1.8.0_111]
我在java 6 ... 2013 ...有點舊 –
是的。那是最近推出Patch的時候。他們決定將其標記爲「無法修復」。話雖如此,Spring和apache通過內部處理它來提供對Patch的支持。爲了使用spring,你需要使用spring的客戶端http請求工廠(就像我在我的回答中提到的那樣) –