模块  java.base
软件包  java.net

Class URLConnection

  • 已知直接子类:
    HttpURLConnectionJarURLConnection

    public abstract class URLConnection
    extends Object
    抽象类URLConnection是表示应用程序和URL之间的通信链接的所有类的超类。 此类的实例可用于读取和写入URL引用的资源。

    通常,创建与URL的连接是一个多步骤过程:

    1. 通过在URL上调用openConnection方法来创建连接对象。
    2. 操纵设置参数和一般请求属性。
    3. 使用connect方法实现与远程对象的实际连接。
    4. 远程对象变得可用。 可以访问标题字段和远程对象的内容。

    使用以下方法修改设置参数:

    • setAllowUserInteraction
    • setDoInput
    • setDoOutput
    • setIfModifiedSince
    • setUseCaches

    并使用以下方法修改常规请求属性:

    • setRequestProperty

    可以使用方法setDefaultAllowUserInteractionsetDefaultUseCaches设置AllowUserInteractionUseCaches参数的默认值。

    上述set方法中的每一个都具有相应的get方法来检索参数或一般请求属性的值。 适用的特定参数和一般请求属性是特定于协议的。

    在与远程对象建立连接后,以下方法用于访问标题字段和内容:

    • getContent
    • getHeaderField
    • getInputStream
    • getOutputStream

    经常访问某些标题字段。 方法:

    • getContentEncoding
    • getContentLength
    • getContentType
    • getDate
    • getExpiration
    • getLastModified

    提供对这些字段的便捷访问。 getContentType方法由getContent方法用于确定远程对象的类型; 子类可能会发现覆盖getContentType方法很方便。

    在通常情况下,可以忽略所有预连接参数和一般请求属性:预连接参数和请求属性默认为合理值。 对于此接口的大多数客户端,只有两种有趣的方法: getInputStreamgetContent ,它们通过便捷方法在URL类中进行镜像。

    有关http连接的请求属性和标头字段的更多信息,请访问:

     http://www.ietf.org/rfc/rfc2616.txt
     
    调用close()的方法InputStreamOutputStream一个的URLConnection的请求后,可能释放与此实例相关联的网络资源,除非特定的协议规范为其指定不同的行为。
    从以下版本开始:
    1.0
    另请参见:
    URL.openConnection()connect()getContent()getContentEncoding()getContentLength()getContentType()getDate()getExpiration()getHeaderField(int)getHeaderField(java.lang.String)getInputStream()getLastModified()getOutputStream()setAllowUserInteraction(boolean)setDefaultUseCaches(boolean)setDoInput(boolean)setDoOutput(boolean)setIfModifiedSince(long)setRequestProperty(java.lang.String, java.lang.String)setUseCaches(boolean)
    • 字段详细信息

      • url

        protected URL url
        URL表示打开此连接的万维网上的远程对象。

        可以通过getURL方法访问此字段的值。

        此变量的默认值是URLConnection构造函数中URL参数的值。

        另请参见:
        getURL()url
      • doInput

        protected boolean doInput
        此变量由setDoInput方法设置。 它的值由getDoInput方法返回。

        URL连接可用于输入和/或输出。 doInput标志设置为true表示应用程序打算从URL连接读取数据。

        该字段的默认值为true

        另请参见:
        getDoInput()setDoInput(boolean)
      • doOutput

        protected boolean doOutput
        此变量由setDoOutput方法设置。 它的值由getDoOutput方法返回。

        URL连接可用于输入和/或输出。 doOutput标志设置为true表示应用程序打算将数据写入URL连接。

        该字段的默认值为false

        另请参见:
        getDoOutput()setDoOutput(boolean)
      • allowUserInteraction

        protected boolean allowUserInteraction
        如果true ,则在上下文中检查此URL ,其中允许用户交互(例如弹出身份验证对话框)是有意义的。 如果是false ,则不允许用户交互。

        可以通过setAllowUserInteraction方法设置此字段的值。 它的值由getAllowUserInteraction方法返回。 其默认值是setDefaultAllowUserInteraction方法的最后一次调用中的参数值。

        另请参见:
        getAllowUserInteraction()setAllowUserInteraction(boolean)setDefaultAllowUserInteraction(boolean)
      • useCaches

        protected boolean useCaches
        如果是true ,则允许协议尽可能使用缓存。 如果是false ,则协议必须始终尝试获取对象的新副本。

        该字段由setUseCaches方法设置。 它的值由getUseCaches方法返回。

        其默认值是最后一次调用setDefaultUseCaches方法时给出的值。

        可以使用setDefaultUseCaches(String,boolean)按协议覆盖默认设置。

        另请参见:
        setUseCaches(boolean)getUseCaches()setDefaultUseCaches(boolean)
      • ifModifiedSince

        protected long ifModifiedSince
        某些协议支持跳过对象的提取,除非该对象最近被修改过一段时间。

        非零值给出的时间是自1970年1月1日GMT以来的毫秒数。 仅当对象比最近修改时才提取对象。

        该变量由setIfModifiedSince方法设置。 它的值由getIfModifiedSince方法返回。

        此字段的默认值为0 ,表示必须始终进行提取。

        另请参见:
        getIfModifiedSince()setIfModifiedSince(long)
      • connected

        protected boolean connected
        如果为false ,则此连接对象尚未创建指向指定URL的通信链接。 如果true ,则已建立通信链路。
    • 构造方法详细信息

      • URLConnection

        protected URLConnection​(URL url)
        构造指向指定URL的URL连接。 不会创建与URL引用的对象的连接。
        参数
        url - 指定的URL。
    • 方法详细信息

      • getFileNameMap

        public static FileNameMap getFileNameMap()
        从数据文件加载文件名映射(mimetable)。 它将首先尝试加载由“content.types.user.table”属性定义的特定于用户的表。 如果失败,它会尝试加载默认的内置表。
        结果
        FileNameMap
        从以下版本开始:
        1.2
        另请参见:
        setFileNameMap(java.net.FileNameMap)
      • setFileNameMap

        public static void setFileNameMap​(FileNameMap map)
        设置FileNameMap。

        如果有安全管理器,则此方法首先调用安全管理器的checkSetFactory方法以确保允许操作。 这可能会导致SecurityException。

        参数
        map - 要设置的FileNameMap
        异常
        SecurityException - 如果存在安全管理器且其 checkSetFactory方法不允许该操作。
        从以下版本开始:
        1.2
        另请参见:
        SecurityManager.checkSetFactory()getFileNameMap()
      • connect

        public abstract void connect()
                              throws IOException
        如果尚未建立此类连接,则打开此URL引用的资源的通信链接。

        如果在已打开连接时调用connect方法(由connected字段指示值true ),则忽略该调用。

        URLConnection对象经历两个阶段:首先创建它们,然后连接它们。 在创建之后,在连接之前,可以指定各种选项(例如,doInput和UseCaches)。 连接后,尝试设置它们是错误的。 依赖于连接的操作(如getContentLength)将在必要时隐式执行连接。

        异常
        SocketTimeoutException - 如果超时到期,则可以建立连接
        IOException - 如果在打开连接时发生I / O错误。
        另请参见:
        connectedgetConnectTimeout()setConnectTimeout(int)
      • setConnectTimeout

        public void setConnectTimeout​(int timeout)
        设置在打开与此URLConnection引用的资源的通信链接时要使用的指定超时值(以毫秒为单位)。 如果超时在可以建立连接之前到期,则引发java.net.SocketTimeoutException。 超时为零被解释为无限超时。

        此方法的某些非标准实现可能会忽略指定的超时。 要查看连接超时设置,请调用getConnectTimeout()。

        参数
        timeout - int ,指定连接超时值(以毫秒为单位)
        异常
        IllegalArgumentException - 如果超时参数为负数
        从以下版本开始:
        1.5
        另请参见:
        getConnectTimeout()connect()
      • getConnectTimeout

        public int getConnectTimeout()
        返回连接超时的设置。

        0 return意味着该选项被禁用(即无限超时)。

        结果
        int ,指示连接超时值(以毫秒为单位)
        从以下版本开始:
        1.5
        另请参见:
        setConnectTimeout(int)connect()
      • setReadTimeout

        public void setReadTimeout​(int timeout)
        将读取超时设置为指定的超时(以毫秒为单位)。 非零值指定在与资源建立连接时从输入流读取时的超时。 如果在有可用于读取的数据之前超时到期,则引发java.net.SocketTimeoutException。 超时为零被解释为无限超时。

        此方法的某些非标准实现会忽略指定的超时。 要查看读取超时设置,请调用getReadTimeout()。

        参数
        timeout - int ,指定要使用的超时值(以毫秒为单位)
        异常
        IllegalArgumentException - 如果超时参数为负数
        从以下版本开始:
        1.5
        另请参见:
        getReadTimeout()InputStream.read()
      • getReadTimeout

        public int getReadTimeout()
        返回读取超时的设置。 0 return意味着该选项被禁用(即无限超时)。
        结果
        int ,指示读取超时值(以毫秒为单位)
        从以下版本开始:
        1.5
        另请参见:
        setReadTimeout(int)InputStream.read()
      • getURL

        public URL getURL()
        返回此 URLConnectionURL字段的值。
        结果
        URLConnectionURL字段的值。
        另请参见:
        url
      • getContentLength

        public int getContentLength()
        返回content-length标头字段的值。

        注意getContentLengthLong()应优先于此方法,因为它返回long ,因此更具可移植性。

        结果
        此连接的URL引用的资源的内容长度,如果内容长度未知,或者内容长度大于Integer.MAX_VALUE, -1
      • getContentLengthLong

        public long getContentLengthLong()
        content-length返回 content-length标头字段的值。
        结果
        此连接的URL引用的资源的内容长度,如果内容长度未知, -1
        从以下版本开始:
        1.7
      • getContentType

        public String getContentType()
        返回 content-type标头字段的值。
        结果
        URL引用的资源的内容类型,如果未知, null
        另请参见:
        getHeaderField(java.lang.String)
      • getContentEncoding

        public String getContentEncoding()
        返回 content-encoding标头字段的值。
        结果
        URL引用的资源的内容编码,如果未知, null
        另请参见:
        getHeaderField(java.lang.String)
      • getExpiration

        public long getExpiration()
        返回 expires标头字段的值。
        结果
        此URL引用的资源的到期日期,如果未知,则为0。 该值是自格林威治标准时间1970年1月1日以来的毫秒数。
        另请参见:
        getHeaderField(java.lang.String)
      • getDate

        public long getDate()
        返回 date标头字段的值。
        结果
        URL引用的资源的发送日期,如果不知道0 返回的值是自格林威治标准时间1970年1月1日以来的毫秒数。
        另请参见:
        getHeaderField(java.lang.String)
      • getLastModified

        public long getLastModified()
        返回last-modified标头字段的值。 结果是格林威治标准时间1970年1月1日以来的毫秒数。
        结果
        上次修改此 URLConnection引用的资源的日期,如果未知,则为0。
        另请参见:
        getHeaderField(java.lang.String)
      • getHeaderField

        public String getHeaderField​(String name)
        返回指定标头字段的值。

        如果在连接上调用可能不同的值多次设置相同的标头,则仅返回最后一个值。

        参数
        name - 标头字段的名称。
        结果
        指定标头字段的值,如果标头中没有此类字段, null
      • getHeaderFields

        public Map<String,​List<String>> getHeaderFields()
        返回标头字段的不可修改的Map。 Map键是表示响应头字段名称的字符串。 每个Map值都是一个不可修改的字符串列表,表示相应的字段值。
        结果
        标题字段的映射
        从以下版本开始:
        1.4
      • getHeaderFieldInt

        public int getHeaderFieldInt​(String name,
                                     int Default)
        返回作为数字解析的命名字段的值。

        存在这种形式的getHeaderField是因为某些连接类型(例如, http-ng )具有预解析的头部。 该连接类型的类可以覆盖此方法并使解析短路。

        参数
        name - 标头字段的名称。
        Default - 默认值。
        结果
        命名字段的值,解析为整数。 如果字段缺失或格式错误,则返回Default值。
      • getHeaderFieldLong

        public long getHeaderFieldLong​(String name,
                                       long Default)
        返回作为数字解析的命名字段的值。

        存在这种形式的getHeaderField是因为某些连接类型(例如, http-ng )具有预解析的头部。 该连接类型的类可以覆盖此方法并使解析短路。

        参数
        name - 标头字段的名称。
        Default - 默认值。
        结果
        命名字段的值,解析为long。 如果字段缺失或格式错误,则返回Default值。
        从以下版本开始:
        1.7
      • getHeaderFieldDate

        public long getHeaderFieldDate​(String name,
                                       long Default)
        返回作为日期解析的命名字段的值。 结果是自命名字段表示的格林威治标准时间1970年1月1日以来的毫秒数。

        这种形式的getHeaderField存在是因为某些连接类型(例如, http-ng )具有预解析的头。 该连接类型的类可以覆盖此方法并使解析短路。

        参数
        name - 标头字段的名称。
        Default - 默认值。
        结果
        字段的值,解析为日期。 如果字段缺失或格式错误,则返回Default参数的值。
      • getHeaderFieldKey

        public String getHeaderFieldKey​(int n)
        返回的关键n th头字段。 如果少于n+1字段,则返回null
        参数
        n - 一个索引,其中 n>=0
        结果
        键为 n th头字段,或者 null如果有不是较少 n+1字段。
      • getHeaderField

        public String getHeaderField​(int n)
        返回的值n th头字段。 如果少于n+1字段,则返回null

        此方法可以与getHeaderFieldKey方法结合使用,以迭代消息中的所有标头。

        参数
        n - 一个索引,其中 n>=0
        结果
        所述的值 n th头字段或 null如果存在少于 n+1字段
        另请参见:
        getHeaderFieldKey(int)
      • getContent

        public Object getContent()
                          throws IOException
        检索此URL连接的内容。

        此方法首先通过调用getContentType方法确定对象的内容类型。 如果这是应用程序第一次看到该特定内容类型,则会创建该内容类型的内容处理程序。

        这样做如下:

        1. 如果应用程序使用setContentHandlerFactory方法设置了内容处理程序工厂实例,则使用内容类型作为参数调用该实例的createContentHandler方法; 结果是该内容类型的内容处理程序。
        2. 如果尚未设置ContentHandlerFactory ,或者工厂的createContentHandler方法返回null ,则使用ServiceLoader机制来定位使用系统类加载器的ContentHandlerFactory实现。 工厂所在的顺序是特定于实现的,并且实现可以自由地缓存所定位的工厂。 一个ServiceConfigurationErrorErrorRuntimeException从抛出createContentHandler ,如果遇到,将传播到调用线程。 如果实例化,则使用内容类型调用每个工厂的createContentHandler方法,直到工厂返回非null,或者所有工厂都已用完为止。
        3. 如果失败,此方法会尝试加载ContentHandler定义的内容处理程序类。 如果该类不存在,或者不是ContentHandler的子类,则抛出UnknownServiceException
        结果
        获取的对象。 应使用instanceof运算符来确定返回的特定对象类型。
        异常
        IOException - 如果在获取内容时发生I / O错误。
        UnknownServiceException - 如果协议不支持内容类型。
        另请参见:
        ContentHandlerFactory.createContentHandler(java.lang.String)getContentType()setContentHandlerFactory(java.net.ContentHandlerFactory)
      • getPermission

        public Permission getPermission()
                                 throws IOException
        返回一个权限对象,表示进行此对象表示的连接所需的权限。 如果不需要进行连接的权限,则此方法返回null。 默认情况下,此方法返回java.security.AllPermission 子类应覆盖此方法并返回最能代表建立URL连接所需权限的权限。 例如, URLConnection表示file: URL将返回java.io.FilePermission对象。

        返回的权限可能取决于连接的状态。 例如,连接前的权限可能与连接后的权限不同。 例如,HTTP服务器(例如foo.com)可能会将连接重定向到其他主机,例如bar.com。 在连接之前,连接返回的权限将表示连接到foo.com所需的权限,而连接后返回的权限将是bar.com。

        权限通常用于两个目的:保护通过URLConnections获取的对象的缓存,以及检查收件人了解特定URL的权限。 在第一种情况下,应在获得对象获得权限。 例如,在HTTP连接中,这将表示连接到最终从中获取数据的主机的权限。 在第二种情况下,应连接之前获得并测试许可。

        结果
        权限对象,表示进行此URLConnection表示的连接所需的权限。
        异常
        IOException - 如果权限的计算需要网络或文件I / O,并且在计算时发生异常。
      • getInputStream

        public InputStream getInputStream()
                                   throws IOException
        返回从此打开的连接读取的输入流。 如果读取超时在数据可用于读取之前到期,则从返回的输入流读取时可以抛出SocketTimeoutException。
        结果
        从此打开的连接读取的输入流。
        异常
        IOException - 如果在创建输入流时发生I / O错误。
        UnknownServiceException - 如果协议不支持输入。
        另请参见:
        setReadTimeout(int)getReadTimeout()
      • toString

        public String toString()
        返回此URL连接的 String表示形式。
        重写:
        toStringObject
        结果
        URLConnection的字符串表示 URLConnection
      • setDoInput

        public void setDoInput​(boolean doinput)
        将此URLConnectiondoInput字段的值设置为指定值。

        URL连接可用于输入和/或输出。 如果您打算使用URL连接进行输入,请将doInput标志设置为true,否则设置为false。 默认值为true。

        参数
        doinput - 新值。
        异常
        IllegalStateException - 如果已连接
        另请参见:
        doInputgetDoInput()
      • getDoInput

        public boolean getDoInput()
        返回此 URLConnectiondoInput标志的值。
        结果
        这个 URLConnection的标志的价值 doInput
        另请参见:
        setDoInput(boolean)
      • setDoOutput

        public void setDoOutput​(boolean dooutput)
        将此URLConnectiondoOutput字段的值设置为指定值。

        URL连接可用于输入和/或输出。 如果您打算将URL连接用于输出,请将doOutput标志设置为true,否则设置为false。 默认值为false。

        参数
        dooutput - 新值。
        异常
        IllegalStateException - 如果已连接
        另请参见:
        getDoOutput()
      • getDoOutput

        public boolean getDoOutput()
        返回此 URLConnectiondoOutput标志的值。
        结果
        这个 URLConnection的标志的价值 doOutput
        另请参见:
        setDoOutput(boolean)
      • setAllowUserInteraction

        public void setAllowUserInteraction​(boolean allowuserinteraction)
        设置此 URLConnectionallowUserInteraction字段的 URLConnection
        参数
        allowuserinteraction - 新值。
        异常
        IllegalStateException - 如果已连接
        另请参见:
        getAllowUserInteraction()
      • getAllowUserInteraction

        public boolean getAllowUserInteraction()
        返回此对象的 allowUserInteraction字段的值。
        结果
        此对象的 allowUserInteraction字段的值。
        另请参见:
        setAllowUserInteraction(boolean)
      • setDefaultAllowUserInteraction

        public static void setDefaultAllowUserInteraction​(boolean defaultallowuserinteraction)
        将所有未来 URLConnection对象的 allowUserInteraction字段的默认值设置为指定值。
        参数
        defaultallowuserinteraction - 新值。
        另请参见:
        getDefaultAllowUserInteraction()
      • getDefaultAllowUserInteraction

        public static boolean getDefaultAllowUserInteraction()
        返回allowUserInteraction字段的默认值。

        此默认值为“sticky”,是所有URLConnections的静态状态的一部分。 此标志适用于下一个以及随后创建的所有URLConnections。

        结果
        allowUserInteraction字段的默认值。
        另请参见:
        setDefaultAllowUserInteraction(boolean)
      • setUseCaches

        public void setUseCaches​(boolean usecaches)
        将此URLConnectionuseCaches字段的值设置为指定的值。

        有些协议会对文档进行缓存。 偶尔,能够“穿过”并忽略缓存(例如,浏览器中的“重新加载”按钮)是很重要的。 如果连接上的UseCaches标志为true,则允许连接使用它可以使用的任何缓存。 如果为false,则忽略缓存。 默认值来自defaultUseCaches,默认为true。 也可以使用setDefaultUseCaches(String,boolean)为每个协议设置默认值。

        参数
        usecaches - 指示是否允许缓存的 boolean
        异常
        IllegalStateException - 如果已连接
        另请参见:
        getUseCaches()
      • getUseCaches

        public boolean getUseCaches()
        返回此 URLConnectionuseCaches字段的值。
        结果
        URLConnectionuseCaches字段的值。
        另请参见:
        setUseCaches(boolean)
      • setIfModifiedSince

        public void setIfModifiedSince​(long ifmodifiedsince)
        将此 URLConnectionifModifiedSince字段的值设置为指定的值。
        参数
        ifmodifiedsince - 新值。
        异常
        IllegalStateException - 如果已连接
        另请参见:
        getIfModifiedSince()
      • getIfModifiedSince

        public long getIfModifiedSince()
        返回此对象的 ifModifiedSince字段的值。
        结果
        此对象的 ifModifiedSince字段。
        另请参见:
        setIfModifiedSince(long)
      • getDefaultUseCaches

        public boolean getDefaultUseCaches()
        返回URLConnectionuseCaches标志的默认值。

        此默认值为“sticky”,是所有URLConnections的静态状态的一部分。 此标志适用于下一个以及随后创建的所有URLConnections。 使用setDefaultUseCaches(String,boolean)每个协议可以覆盖此默认值

        结果
        URLConnectionuseCaches标志的默认值。
        另请参见:
        setDefaultUseCaches(boolean)
      • setDefaultUseCaches

        public static void setDefaultUseCaches​(String protocol,
                                               boolean defaultVal)
        将指定协议的useCaches字段的默认值设置为给定值。 此值将覆盖给定协议的setDefaultUseCaches(boolean)设置的任何默认设置。 对此方法的连续调用会更改设置并影响该协议的所有未来连接的默认值。 协议名称不区分大小写。
        参数
        protocol - 为其设置默认值的协议
        defaultVal - 默认情况下是否为给定协议启用了缓存
        从以下版本开始:
        9
      • getDefaultUseCaches

        public static boolean getDefaultUseCaches​(String protocol)
        返回给定协议的useCaches标志的默认值。 如果为给定协议调用了setDefaultUseCaches(String,boolean) ,则返回该值。 否则,如果调用了setDefaultUseCaches(boolean) ,则返回该值。 如果两个方法都没有被调用,则返回值为true 协议名称不区分大小写。
        参数
        protocol - 需要defaultUseCaches设置的协议
        结果
        给定协议的 useCaches标志的默认值。
        从以下版本开始:
        9
      • setRequestProperty

        public void setRequestProperty​(String key,
                                       String value)
        设置常规请求属性。 如果具有密钥的属性已存在,请使用新值覆盖其值。

        注意:HTTP要求所有请求属性,这些属性可以合法地具有使用相同键的多个实例,以使用逗号分隔列表语法,该语法允许将多个属性附加到单个属性中。

        参数
        key - 请求已知的关键字(例如,“ Accept ”)。
        value - 与之关联的值。
        异常
        IllegalStateException - 如果已连接
        NullPointerException - 如果密钥是 null
        另请参见:
        getRequestProperty(java.lang.String)
      • addRequestProperty

        public void addRequestProperty​(String key,
                                       String value)
        添加由键值对指定的常规请求属性。 此方法不会覆盖与同一密钥关联的现有值。
        参数
        key - 请求已知的关键字(例如,“ Accept ”)。
        value - 与之关联的值。
        异常
        IllegalStateException - 如果已连接
        NullPointerException - 如果key为null
        从以下版本开始:
        1.4
        另请参见:
        getRequestProperties()
      • getRequestProperties

        public Map<String,​List<String>> getRequestProperties()
        返回此连接的一般请求属性的不可修改的Map。 Map键是表示请求标头字段名称的字符串。 每个Map值都是一个不可修改的字符串列表,表示相应的字段值。
        结果
        此连接的常规请求属性的映射。
        异常
        IllegalStateException - 如果已连接
        从以下版本开始:
        1.4
      • setDefaultRequestProperty

        @Deprecated
        public static void setDefaultRequestProperty​(String key,
                                                     String value)
        Deprecated.
        The instance specific setRequestProperty method should be used after an appropriate instance of URLConnection is obtained. Invoking this method will have no effect.
        设置常规请求属性的默认值。 创建URLConnection ,将使用这些属性对其进行初始化。
        参数
        key - 已知请求的关键字(例如,“ Accept ”)。
        value - 与密钥关联的值。
        另请参见:
        setRequestProperty(java.lang.String,java.lang.String)getDefaultRequestProperty(java.lang.String)
      • setContentHandlerFactory

        public static void setContentHandlerFactory​(ContentHandlerFactory fac)
        设置应用程序的ContentHandlerFactory 一个应用程序最多可以调用一次。

        ContentHandlerFactory实例用于从内容类型构造内容处理程序。

        如果有安全管理器,则此方法首先调用安全管理器的checkSetFactory方法以确保允许操作。 这可能会导致SecurityException。

        参数
        fac - 所需的工厂。
        异常
        Error - 如果工厂已经定义。
        SecurityException - 如果存在安全管理器且其 checkSetFactory方法不允许该操作。
        另请参见:
        ContentHandlerFactorygetContent()SecurityManager.checkSetFactory()
      • guessContentTypeFromName

        public static String guessContentTypeFromName​(String fname)
        尝试根据URL的指定“文件”组件确定对象的内容类型。 这是一种方便的方法,可以由覆盖getContentType方法的子类使用。
        参数
        fname - 文件名。
        结果
        根据文件名猜测对象的内容类型。
        另请参见:
        getContentType()
      • guessContentTypeFromStream

        public static String guessContentTypeFromStream​(InputStream is)
                                                 throws IOException
        尝试根据输入流开头的字符确定输入流的类型。 覆盖getContentType方法的子类可以使用此方法。

        理想情况下,不需要这个例程。 但许多http服务器返回错误的内容类型; 此外,还有许多非标准扩展。 直接检查字节以确定内容类型通常比相信http服务器声明的内容类型更准确。

        参数
        is - 支持标记的输入流。
        结果
        猜测内容类型,如果无法确定, null
        异常
        IOException - 如果在读取输入流时发生I / O错误。
        另请参见:
        InputStream.mark(int)InputStream.markSupported()getContentType()