Java 无法获取代理详细信息
我正在开发一个Springboot应用程序,我的任务是获取客户端系统的代理详细信息(代理后的Windows机器),因为java代码托管在RHEL Unix box上(同样位于另一个代理后)。我在Services.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
流类似于(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();