Java 无法获取代理详细信息

Java 无法获取代理详细信息,java,spring-boot,proxy,Java,Spring Boot,Proxy,我正在开发一个Springboot应用程序,我的任务是获取客户端系统的代理详细信息(代理后的Windows机器),因为java代码托管在RHEL Unix box上(同样位于另一个代理后)。我在Services.java中使用下面的代码片段获取代理详细信息。 流类似于(CustomSpringApplication.java->Controller.java->Services.java)当我将上述代码放在控制器或服务层时,该代码不会获取代理详细信息。但只有当我将此代码放在主线程(即Custo

我正在开发一个Springboot应用程序,我的任务是获取客户端系统的代理详细信息(代理后的Windows机器),因为java代码托管在RHEL Unix box上(同样位于另一个代理后)。我在Services.java中使用下面的代码片段获取代理详细信息。

流类似于(CustomSpringApplication.java->Controller.java->Services.java)

当我将上述代码放在控制器或服务层时,该代码不会获取代理详细信息。但只有当我将此代码放在主线程(即CustomSpringApplication.java)中时,它才会获取代理详细信息,但由于某些原因,我无法将此代码放在主线程中,因为它影响到数据库的连接

System.setProperty("java.net.useSystemProxies", "true");

  List<Proxy> l = ProxySelector.getDefault().select(new URI("https://www.google.ca/"));             

  for (Iterator<Proxy> iter = l.iterator(); iter.hasNext();) {

     Proxy proxy = iter.next();

     logger.debug("proxy type : " + proxy.type());

     InetSocketAddress addr = (InetSocketAddress) proxy.address();                 

     if (addr == null) {

        logger.debug("No Proxy");

     } else {

        logger.debug("proxy hostname : " + addr.getHostName());

        proxyMap.put(Constants.PROXY_KEY, addr.getHostName());

        logger.debug("proxy port : " + addr.getPort());

        proxyMap.put(Constants.PORT_KEY, addr.getPort()+"");

     }

  }

上面粘贴的用于查找代理的代码将始终获取运行/部署代码的计算机的代理信息。正如您所说,您最初的ask是在UI层上运行代码的其他东西,这似乎是正确的方法。祝你好运,但要注意那里的CORS问题

var xhr = new XMLHttpRequest();
tmpUrl = proxyurl + url;
xhr.open(method, tmpUrl);
xhr.send();