Module java.base
Package java.net

Class URLStreamHandler

java.lang.Object
java.net.URLStreamHandler

public abstract class URLStreamHandler extends Object
抽象类URLStreamHandler是所有流协议处理程序的通用超类。流协议处理程序知道如何为特定协议类型(如httphttps)建立连接。

在大多数情况下,URLStreamHandler子类的实例不会直接由应用程序创建。相反,当在构造URL时首次遇到协议名称时,将自动加载适当的流协议处理程序。

自从:
1.0
参见:
  • Constructor Details

    • URLStreamHandler

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

    • openConnection

      protected abstract URLConnection openConnection(URL u) throws IOException
      打开到URL参数引用的对象的连接。此方法应该被子类重写。

      如果对于处理程序的协议(如HTTP或JAR),存在属于以下包或其子包之一的公共专用URLConnection子类:java.lang、java.io、java.util、java.net,则返回的连接将是该子类的实例。例如,对于HTTP将返回HttpURLConnection,对于JAR将返回JarURLConnection。

      参数:
      u - 连接到的URL。
      返回:
      用于URLURLConnection对象。
      抛出:
      IOException - 如果在打开连接时发生I/O错误。
    • openConnection

      protected URLConnection openConnection(URL u, Proxy p) throws IOException
      与openConnection(URL)相同,只是连接将通过指定的代理进行;不支持代理的协议处理程序将忽略代理参数并进行正常连接。

      调用此方法将抢占系统的默认ProxySelector设置。

      实现要求:
      此方法的默认实现首先检查给定的URLProxy不为null,然后抛出UnsupportedOperationException。子类应该用适当的实现重写此方法。
      参数:
      u - 连接到的URL。
      p - 将通过该代理进行连接。如果需要直接连接,应指定Proxy.NO_PROXY。
      返回:
      用于URLURLConnection对象。
      抛出:
      IOException - 如果在打开连接时发生I/O错误。
      IllegalArgumentException - 如果u或p为null,或p的类型错误。
      UnsupportedOperationException - 如果实现协议的子类不支持此方法。
      自从:
      1.5
    • parseURL

      protected void parseURL(URL u, String spec, int start, int limit)
      URL的字符串表示解析为URL对象。

      如果有任何继承的上下文,则已经复制到URL参数中。

      URLStreamHandlerparseURL方法将字符串表示解析为http规范。大多数URL协议族具有类似的解析。具有不同语法的协议的流协议处理程序必须覆盖此例程。

      参数:
      u - 接收解析规范结果的URL
      spec - 表示必须解析的URL的String
      start - 开始解析的字符索引。这只是指定协议名称的':'之后(如果有的话)的位置。
      limit - 停止解析的字符位置。这是字符串的结尾或"#"字符的位置(如果存在)。尖号后的所有信息表示锚点。
      抛出:
      IllegalArgumentException - 如果协议处理程序的实现拒绝任何给定参数
      NullPointerException - 如果unull,或者如果start < limitspecnull
    • getDefaultPort

      protected int getDefaultPort()
      返回此处理程序解析的URL的默认端口。此方法旨在由具有默认端口号的处理程序重写。
      返回:
      此处理程序解析的URL的默认端口。
      自从:
      1.3
    • equals

      protected boolean equals(URL u1, URL u2)
      提供默认的equals计算。可能会被具有不同equals()要求的其他协议的处理程序覆盖。此方法要求其所有参数都不为null。这是因为它只被java.net.URL类调用所保证。
      参数:
      u1 - 一个URL对象
      u2 - 一个URL对象
      返回:
      如果两个URL被认为相等,则返回true,即它们引用同一文件中的相同片段。
      自从:
      1.3
    • hashCode

      protected int hashCode(URL u)
      提供默认的哈希计算。可能会被具有不同hashCode计算要求的其他协议的处理程序覆盖。
      参数:
      u - 一个URL对象
      返回:
      适合哈希表索引的int
      自从:
      1.3
    • sameFile

      protected boolean sameFile(URL u1, URL u2)
      比较两个URL,看它们是否引用相同的文件,即具有相同的协议、主机、端口和路径。此方法要求其所有参数都不为null。这是因为它只被java.net.URL类间接调用所保证。
      参数:
      u1 - 一个URL对象
      u2 - 一个URL对象
      返回:
      如果u1和u2引用相同的文件,则返回true
      自从:
      1.3
    • getHostAddress

      protected InetAddress getHostAddress(URL u)
      获取我们主机的IP地址。空主机字段或DNS失败将导致返回null。
      参数:
      u - 一个URL对象
      返回:
      表示主机IP地址的InetAddress
      自从:
      1.3
    • hostsEqual

      protected boolean hostsEqual(URL u1, URL u2)
      比较两个URL的主机组件。
      参数:
      u1 - 要比较的第一个主机的URL
      u2 - 要比较的第二个主机的URL
      返回:
      如果它们相等,则返回true,否则返回false
      自从:
      1.3
    • toExternalForm

      protected String toExternalForm(URL u)
      将特定协议的URL转换为String
      参数:
      u - 该URL。
      返回:
      URL参数的字符串表示。
    • setURL

      protected void setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref)
      URL参数的字段设置为指定的值。只有从URLStreamHandler派生的类才能使用此方法来设置URL字段的值。
      参数:
      u - 要修改的URL。
      protocol - 协议名称。
      host - URL的远程主机值。
      port - 远程机器上的端口。
      authority - URL的权限部分。
      userInfo - URL的userInfo部分。
      path - URL的路径组件。
      query - URL的查询部分。
      ref - 引用。
      抛出:
      SecurityException - 如果URL的协议处理程序与此不同
      IllegalArgumentException - 如果协议处理程序的实现拒绝任何给定参数
      NullPointerException - 如果unull
      自从:
      1.3
    • setURL

      @Deprecated protected void setURL(URL u, String protocol, String host, int port, String file, String ref)
      Deprecated.
      Use setURL(URL, String, String, int, String, String, String, String);
      URL参数的字段设置为指定的值。只有从URLStreamHandler派生的类才能使用此方法来设置URL字段的值。
      参数:
      u - 要修改的URL。
      protocol - 协议名称。自1.2版本起,此值被忽略。
      host - URL的远程主机值。
      port - 远程机器上的端口。
      file - 文件。
      ref - 引用。
      抛出:
      SecurityException - 如果URL的协议处理程序与此不同
      IllegalArgumentException - 如果协议处理程序的实现拒绝任何给定参数
      NullPointerException - 如果unull