ich Frühling 1.4.3Resttemplate und Patch, ungültige
ich versuche, eine Service-Web zu nennen
@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);
}
In meiner Anwendung,
@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();
}
}
In einer anderen Methode, die ich tun
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);
Ich bekomme diesen Fehler
java.net.ProtocolException: Ungültige HTTP-Methode: PATCH bei java.net.HttpURLConnection.setRequestMethod (HttpURLConnection.java:440) ~ [Na: 1.8.0_111] bei sun.net.www. protocol.http.HttpURLConnection.setRequestMethod (HttpURLConnection.java:552) ~ [na: 1.8.0_111]
ich war in Java 6 ... 2013 ... ein bisschen alt –
Ja. Das war, als Patch kürzlich eingeführt wurde. Und sie beschlossen, es als einen Willen zu markieren, nicht zu beheben. Allerdings bieten Spring und Apache Unterstützung für Patch, indem sie es intern als Put behandeln. Um den Frühling dafür zu verwenden, müssen Sie die http-Anfragefabrik des Frühlinges benutzen (wie ich in meiner Antwort erwähnte) –