如何从 eclipse 网络设置访问动态代理?

2022-09-03 16:16:51

我正在开发一个需要连接到远程服务器的Eclipse插件。我正在尝试使用 Eclipse 网络设置来获取 proxyHost 和 Port。我已经能够使用和类获得“手动”设置代理,如果在本地计算机中设置,还可以获得“本机”代理设置。当代理提供程序设置为“本机”并且代理主机和端口值在 Eclipse 设置中显示为动态时,会出现此问题。有没有办法访问这些值?IProxyServiceIProxyData

谢谢。


答案 1

感谢您的回复,

这可以在 eclipse 中使用 IProxyService 类来完成。下面的代码片段在某些情况下使用了反射,您可以忽略这些情况。也看看这个链接(http://www.vogella.de/blog/2009/12/08/eclipse-rcp-proxy-preference/)

1)获取代理跟踪器

private ServiceTracker getProxyTracker () throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    if (proxyTracker != null)
        return proxyTracker;

    String proxyServiceClassName = "org.eclipse.core.net.proxy.IProxyService";
    String bundleClassName = "org.osgi.framework.Bundle";
    Class bundleClass = Class.forName(bundleClassName);
    Method getBundleContextMth = bundleClass.getMethod("getBundleContext", null);
    getBundleContextMth.setAccessible(true);

    BundleContext bundleCntx = (BundleContext) getBundleContextMth.invoke(bundle, null);
    proxyTracker = new ServiceTracker(bundleCntx, proxyServiceClassName, null);
    proxyTracker.open();

    return proxyTracker;
}

2)使用“isProxiesEnabled”方法来检查代理是否已启用

3)根据日食版本,使用“getProxyDataForHost”或“选择”方法来访问日食代理信息(主机,用户ID,密码等)。


答案 2

您的问题不是在 Eclipse 在运行时确定主机之前执行插件连接阶段吗?这是我看到的Eclipse网络设置的静态和动态定义之间的唯一区别。


推荐