RestTemplate使用https请求

小虾米 阅读:1189 2021-04-01 11:16:56 评论:0

1.配置Resttemplate

import java.security.KeyManagementException; 
import java.security.KeyStoreException; 
import java.security.NoSuchAlgorithmException; 
import java.security.cert.X509Certificate; 
import javax.net.ssl.SSLContext; 
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; 
import org.apache.http.ssl.SSLContexts; 
import org.apache.http.ssl.TrustStrategy; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; 
import org.springframework.web.client.RestTemplate; 
@Configuration 
public class RestTemplateConf { 
    @Bean 
    public RestTemplate restTemplateHttps() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { 
        TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain,String authType)->true; 
        SSLContext sslContext = SSLContexts.custom() 
                .loadTrustMaterial(null,acceptingTrustStrategy) 
                .build(); 
        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext); 
        CloseableHttpClient httpClient = HttpClients.custom() 
                .setSSLSocketFactory(csf) 
                .build(); 
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); 
        requestFactory.setHttpClient(httpClient); 
        RestTemplate restTemplate = new RestTemplate(requestFactory); 
        return restTemplate; 
    } 
} 

2.注入RestTemplate

@Resource(name = "restTemplateHttps") 
private RestTemplate restTemplateHttps; 

3.restTemplate远程访问接口

String timestamp = String.valueOf(new Date().getTime()); 
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); 
map.add("timestamp", timestamp); 
map.add("encryption", MD5.GetMD5Code(businessCode + key + timestamp)); 
map.add("isLiveCheck", isLiveCheck); 
map.add("topNum", topNum); 
logger.info("调用人脸识别入参:{}", map); 
map.add("faceImage", faceImage); 
HttpHeaders headers = new HttpHeaders(); 
headers.add("Content-Type", "application/x-www-form-urlencoded"); 
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(map, 
				headers); 
String resp = restTemplateHttps.postForObject(url, httpEntity, String.class); 
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号