当前位置: 首页 > 面试题库 >

Java的ProxySelector是否不适用于自动代理配置脚本?

高经艺
2023-03-14
问题内容

我希望我的Java程序使用系统的代理配置。因此,我使用了在很多地方找到的代码,例如[this
answer](http://codingdict.com/questions/109305,将其设置java.net.useSystemProxies为true并调用ProxySelector.getDefault().select(...)以发现我想要访问的特定主机的代理。当我在“
Internet属性”中配置了单个显式代理服务器时,此方法可以正常工作。但是,如果我设置了“使用自动配置脚本”,它将始终返回直接的“代理”。

我知道该脚本有效,因为我的浏览器可以访问为其返回代理服务器的主机,而没有脚本集则不能。我什至尝试将脚本简化为最基本的要求:

function FindProxyForURL(url, host)
{
    return "PROXY my.proxy.mydomain:3128";
}

并且可以在我的浏览器中使用,但ProxySelector.getDefault().select(...)仍仅返回DIRECT。

我想念什么吗?(应该在Java 1.6和Windows 7上使用)。


问题答案:

否,Java ProxySelector无法读取代理自动配置(PAC)文件。

但是,正如Brian de Alwis建议回答我的类似问题一样,
Proxy Vole 库似乎提供了这种支持/功能。

要为Java应用程序提供现成的网络连接,可以使用Proxy-
Vole库。它提供了一些策略来自动检测当前的代理设置。有许多可配置的策略可供选择。目前,Proxy-Vole支持以下代理检测策略。

  • 读取平台设置(支持:Windows,KDE,Gnome,OSX)
  • 读取浏览器设置(支持:Firefox 3.x,Internet Explorer; Chrome和Webkit使用平台设置)
  • 读取环境变量(在Linux / Unix服务器系统上经常使用的变量)
  • 使用WPAD / PAC的自动检测脚本 (不支持所有变体)


 类似资料:
  • 它可以在我的浏览器中工作,但是仍然只返回direct。 我是不是漏掉了什么?(如果有关系的话,这是在Java1.6和Windows7上。)

  • 问题内容: 我想 在Solaris上 配置Java代理设置以使用代理自动配置(PAC)脚本。 我已经找到了使用Java控制面板在Windows机器上进行设置的说明,但是在查找Solaris Java安装的位置/如何进行相同设置更改时遇到了麻烦。 我想使用代理自动配置(PAC)脚本,而不是手动为每个连接设置代理信息,或使用单个代理。我需要针对不同类型的URL利用多个代理。 问题答案: 可悲的是,系统

  • 我接手了一个Sring MVC项目,需要改变它的行为,所以在我的servlet中我发送了一个get请求来自动登录,我的servlet代码如下所示: 当我用Firefox运行它时,它让我登录,但在IE中不起作用。 我还手动粘贴了URL: http://Example.com/SupportCenter/login.html?userName=UID 进入两个broswers,他们都让我登录。那么,为

  • 问题内容: 是否有Java 的软件包管理器,如Python的easy_install? 我正在寻找可从命令行而不是从IDE使用的解决方案。 问题答案: Maven确实基于可浏览,可搜索的远程 存储库* (如中央 存储库) 提供 依赖项管理 。 * Maven Ant Tasks (已淘汰) 使用Maven的存储库提供依赖项管理以及对Ant构建的更多支持。 Ant Ivy是Maven Ant Tas

  • 如果为android设备设置代理设置,它们是否适用于设备上的所有应用程序(包括浏览器)?或者它们只适用于浏览器? 我问的原因是,当你去更改Android设备上的代理设置有这个消息,它让我困惑:

  • 我试图初始化log4j记录器使用SpringIOC和使用财产onfigurator.configure配置记录器,但财产onfigurator.configure不工作。 我的问题是如何将配置(log4j.properties)传递给Logger类? 波姆。xml 混淆班 log4j。性质