Невозможно вызвать API через прокси - PullRequest
0 голосов
/ 20 сентября 2018

У меня развернуто Java-приложение на моем локальном сервере Tomcat.Это приложение должно вызывать некоторые API для правильной работы, но, к сожалению, я получаю разные исключения с разными подходами, и я не знаю, как решить эту проблему.Когда я запускаю этот фрагмент кода локально, он работает нормально.Но после развертывания это больше не работает.Первое, что я попробовал, было следующее:

        CloseableHttpClient httpclient = HttpClients.createDefault();
    try {
        HttpHost target = new HttpHost(apiAdress, 443, "HTTPS");
        HttpHost proxy = new HttpHost(proxyAdress, 80, "HTTP");

        RequestConfig config = RequestConfig.custom()
                .setProxy(proxy)
                .build();
        HttpGet request = new HttpGet(getPath);
        request.setConfig(config);

        CloseableHttpResponse response = httpclient.execute(target, request);
        try {
            LOG.debug("----------------------------------------");
            LOG.debug(response.getStatusLine().toString());

            HttpEntity responseEntity = response.getEntity();
            if(responseEntity!=null) {
                String responseString = EntityUtils.toString(responseEntity);
                return JsonUtils.getObjectFromJson(responseString, NachrichtenResponse.class);
            }
        } catch (Exception e) {
            LOG.error(e.getMessage(),e);
        } finally {
            response.close();
        }
    } catch (Exception ex) {
        LOG.error(ex.getMessage(),ex);
    } finally {
        try {
            httpclient.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    return null;

это приводит к следующему исключению:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 106 common frames omitted

Когда я меняю схему прокси на HTTPS, как это

HttpHost proxy = new HttpHost("94.100.132.14", 80, "HTTPS");

это приводит к следующему исключению:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

и без настроенного прокси я получаю отказ в соединении исключения.Я действительно не знаю, в чем проблема, и мне трудно понять это.Кто-нибудь когда-нибудь сталкивался с подобной проблемой и имеет решение для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...