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.作者投稿可能会经我们编辑修改或补充。