J'invoque un système externe avec un modèle de repos et cela fonctionne bien dans mon local sans aucun paramètre de délai d'attente, mais sur mon serveur de test, cela me donne l'erreur suivante:
Erreur d'E/S sur POST pour " https: // externalsystem/url ": connexion refusée: connexion; l'exception imbriquée est Java.net.ConnectException: connexion refusée : relier
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
HttpEntity<MultiValueMap<String, String>> request = new
HttpEntity<MultiValueMap<String, String>>(map, headers);
map.add("key", value);
restTemplate.postForEntity(url, request, String.class);
J'ai reçu ce problème sur JRE1.7 mais j'ai bien fonctionné avec JDK 8. Étapes pour résoudre ce problème
Mettez à jour JCE avec UnlimitedJCEPolicyJDK7. Téléchargez-le depuis Oracle Java - http://www.Oracle.com/technetwork/Java/javase/downloads/jce-7-download-432124.html
inclure les fichiers jar httpclient-4.5.2.jar et httpcore-4.4.4.jar
Utilisez le code ci-dessous pour getRestTemplate:
public static RestTemplate getRestTemplate()
throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
//TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
TrustStrategy acceptingTrustStrategy = new TrustStrategy() {
public boolean isTrusted(
final X509Certificate[] chain, String authType) throws CertificateException {
// Oh, I am easy...
return true;
}
};
SSLContext sslContext = org.Apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy)
.build();
//SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(
sslContext,new String[]{"TLSv1.2"},
null,
new NoopHostnameVerifier());
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
/*HttpComponentsClientHttpRequestFactory requestFactory
= new HttpComponentsClientHttpRequestFactory(
HttpClientBuilder.create()
.setProxy(new HttpHost("proxycacheST.hewitt.com", 3228, "http"))
.build());*/
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
return restTemplate;
}
Étape 4: appelez restTemplate.exchange (resturl, HttpMethod.POST, null, String.class);
J'espère qu'il obtiendra des résultats corrects