1.来个HttpComponentsClientHttpRequestFactory方法:
private HttpComponentsClientHttpRequestFactory generateHttpRequestFactory() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true;
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext,
new NoopHostnameVerifier());
HttpClientBuilder httpClientBuilder = HttpClients.custom();
httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);
CloseableHttpClient httpClient = httpClientBuilder.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient(httpClient);
return factory;
}
2.使用this.generateHttpRequestFactory()
public ResponseEntity<String> postUrlHnjg(String url, Map<String,String> params) {
HttpHeaders headers = new HttpHeaders();
headers.setAll(params);
HttpEntity<String> httpEntity = new HttpEntity<>("", headers);
try {
restTemplate.setRequestFactory(this.generateHttpRequestFactory());
}catch (Exception e){
e.printStackTrace();
}
restTemplate.setErrorHandler(new DefaultResponseErrorHandler(){
@Override
public void handleError(ClientHttpResponse response) throws IOException {
if(response.getRawStatusCode() != 401){
super.handleError(response);
}
}
});
return restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
}
3.返回结果处理
ResponseEntity<String> response=requestUtils.postUrlHnjg(url,params);
JSONObject msgObj=JSONObject.parseObject(response.getBody());
if(response.getStatusCode().series()==HttpStatus.Series.SUCCESSFUL){
HttpHeaders headerObj=response.getHeaders();
token=headerObj.get("token").get(0);
refreshTokenMap(token,userName);
}else{
throw new BusinessException(msgObj.getString("message"));
}