RestTemplate调用请求方式为PATCH的接口
程序员文章站
2022-06-17 19:02:04
问题描述使用 RestTemplate 调用请求方式为PATCH的接口时,报如下错误:java.net.ProtocolException: Invalid HTTP method: PATCH原因分析RestTemplate工厂类(ClientHttpRequestFactory)的默认实现中,不支持使用PATCH方法。解决办法在创建RestTemplate对象时,通过构造方法,将RestTemplate配置类的工厂对象修改为HttpComponentsClientHttpRequestFa...
问题描述
使用 RestTemplate 调用请求方式为PATCH的接口时,报如下错误:
java.net.ProtocolException: Invalid HTTP method: PATCH
原因分析
RestTemplate工厂类(ClientHttpRequestFactory)的默认实现中,不支持使用PATCH方法。
解决办法
在创建RestTemplate对象时,通过构造方法,将RestTemplate配置类的工厂对象修改为HttpComponentsClientHttpRequestFactory即可。
核心代码如下:
RestTemplate restTemplatePatch = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
使用 RestTemplate 发送 PATCH 请求有两种方式(exchange和exchange),完整代码如下:
//jsonValue 字符串类型的为入参
JSONObject paramObject =JSONObject.parseObject(jsonValue);
String url = otnIp;
StringBuffer forwardURL = new StringBuffer();
forwardURL.append("http://").append(url).append("/restconf/Operation/v1/OMCService:Service/SubNetLink");
//创建 restTemplate 对象
RestTemplate restTemplatePatch = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
//方法一:使用exchange
//封装请求头
MultiValueMap<String,String> headers = new LinkedMultiValueMap<String,String>();
headers.add("Accept","application/json");
headers.add("Content-Type","application/json");
//封装请求内容
HttpEntity<JSONObject> requestEntity = new HttpEntity(paramObject,headers);
ResponseEntity responseEntity = restTemplatePatch.exchange(forwardURL.toString(), HttpMethod.PATCH, requestEntity, Object.class, paramMap);
//方法二:使用patchForObject
ResponseEntity responseEntity = restTemplatePatch.patchForObject(forwardURL.toString(), paramObject, ResponseEntity.class, paramMap);
备注:需要添加如下依赖:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
本文地址:https://blog.csdn.net/qq_34967770/article/details/110880418
上一篇: 你是上帝都放不上去