

























今天在用RestTemplate做 PATCH请求的时候,提示不支持PATCH请求。查了下资料 默认的RestTemplate不支持PATCH方法,需要通过以下方式解决:
<dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId>
<version>5.5.1</version>
</dependency>
package com.idmt.difyweb.config; /*import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;*/ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import java.time.Duration; //使用案例 https://cloud.tencent.com/developer/article/1606785 @Configuration public class RestTemplateConfig { /* @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) { return new RestTemplate(factory); } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); //HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setReadTimeout(5000); // 读取超时时间 factory.setConnectTimeout(15000); // 连接超时时间 return factory; }*/ @Bean public RestTemplate restTemplate() { // 使用HttpComponentsClientHttpRequestFactory支持PATCH var requestFactory = new HttpComponentsClientHttpRequestFactory(); requestFactory.setConnectTimeout(Duration.ofSeconds(5)); requestFactory.setReadTimeout(Duration.ofSeconds(10)); return new RestTemplate(requestFactory); } }
@ResponseBody @GetMapping("/documentsstatusupdate") public String DocumentStatusUpdate(@RequestParam("document_id") String document_id, @RequestParam("document_statu") String document_statu ) {// 创建请求体 String requestBody = "{\"document_ids\":[\""+document_id+"\"]}"; String url = domainName + "datasets/" + difyDataId + "/documents/status/"+document_statu; ResponseEntity<String> response = restTemplate.exchange( url, HttpMethod.PATCH, getEntityJson(requestBody), String.class ); return response.getBody(); }
private HttpEntity<String> getEntityJson(String postBody) { HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", "Bearer " + accessToken); headers.set("Content-Type", "application/json"); HttpEntity<String> entity = new HttpEntity<String>(postBody, headers); return entity; }
注意:
org.apache.httpcomponents.client5与org.apache.httpcomponents是Apache HttpClient库的两个不同版本系列,主要区别在于代际版本、包结构、API设计和适用场景。
org.apache.http。org.apache.hc.client5.http,避免与旧版冲突。 12org.apache.http→org.apache.hc.client5.http),并重构阻塞调用为异步模式此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。