web-dev-qa-db-fra.com

Erreur d'E / S sur POST requête pour "url": connexion refusée

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);
3
user1441280

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

  1. 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

  2. inclure les fichiers jar httpclient-4.5.2.jar et httpcore-4.4.4.jar

  3. 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

0
chandra jakhar