spring-boot - Resttemplate 和补丁,无效

标签 spring-boot resttemplate spring-restcontroller

我使用 Spring 1.4.3

我尝试调用网络服务

  @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: Invalid HTTP method: PATCH at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:440) ~[na:1.8.0_111] at sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:552) ~[na:1.8.0_111]

最佳答案

基于 ritesh.garg 的回答:

添加以下内容 dependency到您的类路径:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.6</version>
</dependency>

然后,创建您的 RestTemplate像这样:
    RestTemplate template = new RestTemplate(new HttpComponentsClientHttpRequestFactory());

关于spring-boot - Resttemplate 和补丁,无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368762/

相关文章:

未调用 Spring Boot Rest API 过滤器

java - 如何将路径变量映射到 spring-rest 中的实体

mysql - Springboot&Mysql : cannot find table with uppercase names

spring - 在 spring boot 启动时在 postgres 中创建一个模式

java - 如何使用 Spring RestTemplate 将 List 或 String 数组传递给 getForObject

java - 为 Spring RestTemplate 设置 "Host" header 不起作用

spring - 作为查询参数传递给 spring restcontroller 的语言环境列表在测试时显示不规则行为

reactjs - 如何使用 spring boot 显示来自 AWS s3 的图像并使用react?

java - 在 Spring Boot 应用程序中启动 Eureka Server 时出错

java - java-与目标类作为嵌套映射和列表的RestTemplate Exchange