欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Springboot restTemplate 用法

Springboot restTemplate 用法

2025/6/13 22:10:13 来源:https://blog.csdn.net/qq_25272679/article/details/148553981  浏览:    关键词:Springboot restTemplate 用法

1. 获取不通的RestTemplate

package com.iwhalecloud.res.resmaster.cost.config;public class RestTemplateFactory {public static RestTemplate buildDefaultTemplate() {final RequestConfig defaultRequestConfig = getRequestConfig(60000, 3000, 3000);HttpClientBuilder httpClientBuilderRetry = createCommonHttpClientBuilder().setDefaultRequestConfig(defaultRequestConfig);CloseableHttpClient hc = httpClientBuilderRetry.build();RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(hc));return restTemplate;}public static RestTemplate buildNoCookieTemplate() {RequestConfig defaultRequestConfig = getRequestConfig(60000, 3000, 3000);CloseableHttpClient hc = createCommonHttpClientBuilder().setDefaultRequestConfig(defaultRequestConfig).disableCookieManagement().build();RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(hc));return restTemplate;}public static RestTemplate buildNoRedirectTemplate() {final RequestConfig noRedirectRequestConfig = getRequestConfig(60000, 3000, 3000);HttpClientBuilder httpClientBuilderRetry = createCommonHttpClientBuilder().setRedirectStrategy(new RedirectStrategy() {@Overridepublic boolean isRedirected(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext httpContext) throws ProtocolException {return false;}@Overridepublic HttpUriRequest getRedirect(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext httpContext) throws ProtocolException {return null;}}).setDefaultRequestConfig(noRedirectRequestConfig);CloseableHttpClient hc = httpClientBuilderRetry.build();RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(hc));return restTemplate;}private static RequestConfig getRequestConfig(int socketTimeOut, int connectTimeout, int ConnectionRequestTimeout) {return RequestConfig.custom().setSocketTimeout(socketTimeOut).setConnectTimeout(connectTimeout).setConnectionRequestTimeout(ConnectionRequestTimeout).build();}private static HttpClientBuilder createCommonHttpClientBuilder() {final SocketConfig socketConfig = SocketConfig.custom().setSoKeepAlive(true).setSoReuseAddress(true).setSoTimeout(2000).build();return HttpClientBuilder.create().setDefaultSocketConfig(socketConfig).setMaxConnTotal(1000).setMaxConnPerRoute(1000).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);}
}

2. restTemplate 发送get请求

2.1 方式1

  • 需要设置请求报文body+headers
 ResponseEntity<String> smapInfo = restTemplate.exchange("url地址", HttpMethod.GET, httpEntity, String.class);

2.2 方式2

  • 需要使用URLEncoder.encode编码的get请求
ResponseEntity<String> info= restTemplate.getForEntity(new URI(getUrl() + "?a=" + smapId + "&b=" + scd+ "&sn=" + sn), String.class);

2.3 方式3

restTemplate.getForEntity("url地址", String.class);

3. restTemplate 发送post请求

  • 发送文件上传
MultipartFile multipartFile = new MockMultipartFile("file",  // 参数名attachmentName,  // 原始文件名contentType,  // MIME 类型fileBytes);
// 1. 构建 MultiValueMap
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", amultipartFile.getResource());
// 2. 配置 RestTemplate
FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
formConverter.setCharset(StandardCharsets.UTF_8); // 解决中文乱码
restTemplate.getMessageConverters().add(formConverter);
// 3. 请求头设置
HttpHeaders headers = new HttpHeaders();
headers.add("Cookie", "34jewi8erwjd72her");
headers.setContentType(MediaType.MULTIPART_FORM_DATA);//发送请求
ResponseEntity<String> response = restTemplate.postForEntity("url地址", new HttpEntity(body, headers), String.class);
  • 普通的form表单post请求
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("ab", "ab");
// 创建HTTP头部,并设置内容类型为Form-data
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 创建HTTP请求实体,包含请求体和头部信息
HttpEntity<Object> requestEntity = new HttpEntity<>(params, headers);
ResponseEntity<String> response = restTemplate.postForEntity("url地址", requestEntity, String.class);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词