Можно ли настроить API веб-служб Primavera EPPM для подключения через java.net.Proxy? - PullRequest
0 голосов
/ 13 июня 2019

Я успешно использовал API веб-служб P6, где он размещен на компьютере, доступном для клиента. Однако теперь мы переместили клиентское приложение в такое место, где оно может получить доступ только к хосту веб-служб P6 через прокси-сервер. Я могу сделать прямой Http-вызов веб-сервисам и получить действительный ответ, используя URL.connect (java.net.Proxy), создав соответствующий действительный прокси-сервер. Есть ли способ создать различные сервисы (например, ProjectService) и указать ему использовать прокси-сервер, который я создаю для установления соединения?

Context ctx = new InitialContext();
            ConnectivityConfiguration configuration = (ConnectivityConfiguration) ctx.lookup("java:comp/env/connectivityConfiguration");
            String lookName = "P6188_WSDL";
            DestinationConfiguration destConfiguration = configuration.getConfiguration(lookName);
            if (destConfiguration == null) {
                response.getWriter().append("Did not find: "+lookName);
                return;
            }
            String value = destConfiguration.getProperty("URL")+"/p6ws/services/ProjectService?wsdl";
            URL url = new URL(value);
              String proxyType = destConfiguration.getProperty("ProxyType");
                Proxy proxy = getProxy(proxyType);
                  //response.getWriter().append("<br>Proxy type: "+proxyType+" = "+proxy);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(proxy);

                injectHeader(urlConnection, proxyType);

После этого момента urlConnection предоставит ожидаемый ответ wsdl. Однако без прокси urlConnection не будет работать.

...