Module java.base
Package java.net

Class ProxySelector

java.lang.Object
java.net.ProxySelector

public abstract class ProxySelector extends Object
选择要使用的代理服务器(如果有)以连接到由URL引用的网络资源。代理选择器是这个类的一个具体子类,并通过调用setDefault方法进行注册。可以通过调用getDefault方法来检索当前注册的代理选择器。

当注册了代理选择器时,例如,URLConnection类的子类应该为每个URL请求调用select方法,以便代理选择器可以决定是使用直接连接还是代理连接。 select方法返回一个首选连接方法的集合的迭代器。

如果无法建立到代理(PROXY或SOCKS)服务器的连接,则调用者应调用代理选择器的connectFailed方法,通知代理选择器代理服务器不可用。

默认代理选择器确实执行与代理设置相关的一组系统属性

自从:
1.5
  • Constructor Details

    • ProxySelector

      public ProxySelector()
      子类调用的构造函数。
  • Method Details

    • getDefault

      public static ProxySelector getDefault()
      获取系统范围的代理选择器。
      返回:
      系统范围的ProxySelector
      抛出:
      SecurityException - 如果安装了安全管理器并且拒绝NetPermission("getProxySelector")
      自从:
      1.5
      参见:
    • setDefault

      public static void setDefault(ProxySelector ps)
      设置(或取消设置)系统范围的代理选择器。注意:非标准协议处理程序可能会忽略此设置。
      参数:
      ps - HTTP代理选择器,或null以取消设置代理选择器。
      抛出:
      SecurityException - 如果安装了安全管理器并且拒绝NetPermission("setProxySelector")
      自从:
      1.5
      参见:
    • select

      public abstract List<Proxy> select(URI uri)
      根据用于访问资源的协议和用于访问资源的目标地址,选择所有适用的代理。URI的格式定义如下:
      • http URI用于http连接
      • https URI用于https连接
      • socket://host:port
        用于tcp客户端套接字连接
      参数:
      uri - 需要连接的URI
      返回:
      代理列表。列表中的每个元素都是Proxy类型;当没有可用代理时,列表将包含一个代表直接连接的Proxy元素。
      抛出:
      IllegalArgumentException - 如果参数为null或无法从提供的uri中确定协议或主机
    • connectFailed

      public abstract void connectFailed(URI uri, SocketAddress sa, IOException ioe)
      表示无法建立到代理/socks服务器的连接。此方法的实现可以暂时删除代理或重新排列由select(URI)返回的代理序列,使用地址和尝试连接时捕获的IOException。
      参数:
      uri - 代理在sa上无法提供服务的URI。
      sa - 代理/SOCKS服务器的套接字地址
      ioe - 尝试连接时抛出的I/O异常。
      抛出:
      IllegalArgumentException - 如果任一参数为null
    • of

      public static ProxySelector of(InetSocketAddress proxyAddress)
      返回一个ProxySelector,该ProxySelector为所有HTTP和HTTPS请求使用给定的代理地址。如果代理为null,则禁用代理。
      参数:
      proxyAddress - 代理的地址
      返回:
      一个ProxySelector
      自从:
      9