public final class URL extends Object implements Serializable
URL
代表统一资源定位符,指向“万维网上的资源”。一个资源可以是简单的作为一个文件或一个目录,或者它可以是一个更复杂的对象的参考,如查询到数据库或搜索引擎。在URL和格式类型的更多信息,可以发现:
Types of URL
在一般情况下,一个网址可以被分解成几个部分。考虑下面的例子:
http://www.example.com/docs/resource1.html
上述URL表示使用的协议是http
(超文本传输协议)和信息驻留在主机名www.example.com
。在主机的信息称为/docs/resource1.html
。在主机上这个名称的确切含义是协议依赖和主机依赖的。这些信息通常驻留在一个文件中,但它可以在飞行中产生。这个URL的组成部分称为路径组件。
一个URL可以选择指定一个“口”,这是端口号的TCP连接了远程主机。如果没有指定端口,则该协议的默认端口将被使用。例如,对于http
默认端口是80
。另一个端口可以被指定为:
http://www.example.com:1080/docs/resource1.html
对URL
语法定义的RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,修改RFC 2732: Format for Literal IPv6 Addresses in URLs。字面的IPv6地址格式也支持scope_ids。语法和用法scope_ids描述here。
一个URL可能有附加到它的“碎片”,也被称为一个“裁判”或“参考”。片段由锋利的标志人物”#”后面的字符。例如,
http://java.sun.com/index.html#chapter1
这个片段不是技术上的一部分的网址。相反,它表明,在指定的资源进行检索,应用在文件,标签chapter1
连接到它的那一部分特别感兴趣。标签的意义是特定于资源的。
一个应用程序还可以指定一个“相对的网址”,其中只包含足够的信息,以达到相对于另一个网址的资源。相对URL通常在HTML页面中使用。例如,如果网址的内容:
蕴含的相对URL:http://java.sun.com/index.html
可以简写为:FAQ.html
http://java.sun.com/FAQ.html
相对的网址不需要指定一个网址的所有组件。如果该协议、主机名或端口号丢失,则该值是从完全指定的网址继承的。必须指定文件组件。可选的片段不是继承的。
URL类本身并没有任何的URL编码或解码组件根据逃逸机制定义rfc2396。它是调用方的责任来编码任何字段,它需要被逃脱之前调用的网址,也可以解码任何逃脱的字段,从网址返回。此外,由于网址没有任何的网址逃逸的知识,它不承认相同的网址的编码或解码形式之间的等价。例如,两个网址:
http://foo.com/hello HTTP:/ /世界/ COM /你好% 20world foo。将被视为不相等。
注意,这URI
类执行其成分在某些情况下,领域逃逸。推荐的方式进行编码和解码的网址是使用URI
,和这两类使用toURI()
和URI.toURL()
之间转换。
的URLEncoder
和URLDecoder
类也可以使用,但只有HTML表单编码的,这是没有定义的编码方式在rfc2396相同。
Constructor and Description |
---|
URL(String spec)
创建于
String 表示
URL 对象。
|
URL(String protocol, String host, int port, String file)
创建从指定的
protocol ,
host ,一
URL 对象
port 数,和
file 。
|
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
创建从指定的
protocol ,
host ,
port 数,
file 一
URL 对象,和
handler 。
|
URL(String protocol, String host, String file)
创建一个URL指定的
protocol 名字,
host 名字,和
file 名称。
|
URL(URL context, String spec)
通过在指定的上下文中解析给定的规范,创建一个网址。
|
URL(URL context, String spec, URLStreamHandler handler)
通过在指定的上下文中解析给定的规范与指定的处理程序创建一个链接。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
将此网址与另一个对象进行比较。
|
String |
getAuthority()
得到这
URL 权威部分。
|
Object |
getContent()
获取此网址的内容。
|
Object |
getContent(类[] classes)
获取此网址的内容。
|
int |
getDefaultPort()
得到这个
URL 相关协议的默认端口号。
|
String |
getFile()
得到这
URL 文件名。
|
String |
getHost()
得到这
URL 主机名称,如适用。
|
String |
getPath()
得到这
URL 路径的一部分。
|
int |
getPort()
得到这
URL 端口号。
|
String |
getProtocol()
得到这
URL 协议名称。
|
String |
getQuery()
得到这
URL 查询的一部分。
|
String |
getRef()
得到锚(也被称为“参考”)这
URL 。
|
String |
getUserInfo()
得到这
URL 用户信息部分。
|
int |
hashCode()
创建一个适用于哈希表索引的整数。
|
URLConnection |
openConnection()
返回一个
URLConnection 实例表示的远程对象的连接被称为
URL 。
|
URLConnection |
openConnection(Proxy proxy)
同
openConnection() ,除了连接将通过指定的代理进行;协议处理程序不支持proxing将忽略代理参数,使正常的连接。
|
InputStream |
openStream()
打开一个连接到这
URL 和返回的连接阅读
InputStream 。
|
boolean |
sameFile(URL other)
比较两个网址,不包括片段组件。
|
static void |
setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
设置应用程序的
URLStreamHandlerFactory 。
|
String |
toExternalForm()
构建该
URL 字符串表示形式。
|
String |
toString()
构建该
URL 字符串表示形式。
|
URI |
toURI()
返回一个
URI 相当于这个URL。
|
public URL(String protocol, String host, int port, String file) throws MalformedURLException
protocol
,
host
,
port
数,和
file
一
URL
对象。
host
可以表示为一个主机名或IP地址的一个文字。如果使用IPv6的文字地址,它应该包含在方括号('['
和']'
),指定由RFC 2732;然而,也接受RFC 2373: IP Version 6 Addressing Architecture定义文字的IPv6地址格式。
指定一个-1
port
数量表明URL应该使用默认端口的协议。
如果这是被指定的协议创造了第一个流协议处理程序URL对象,对象,类URLStreamHandler
实例,为协议创建:
URLStreamHandlerFactory
实例为流处理程序工厂,然后该实例的createURLStreamHandler
方法被调用的协议字符串作为参数来创建流协议处理程序。URLStreamHandlerFactory
尚未建立,或者工厂的createURLStreamHandler
方法返回null
,然后构造函数发现系统属性的值:
如果系统属性的值不java.protocol.handler.pkgs
null
,它被解释为一个名单,由一个垂直的斜杠字符“|
分开包装的。构造函数尝试加载类:
命名在 <包裹> 是由包装和< <协议> 的名字换成是通过协议的名称替换。如果这类不存在,或者如果类的存在,但它不是<package>.<protocol>.Handler
URLStreamHandler
的子类,然后在列表中的下一个计划是尝试。
协议>
包裹>如果这类不存在,或者如果类的存在,但它不是<system default package>.<protocol>.Handler
URLStreamHandler
的子类,然后MalformedURLException
抛出。保证以下协议的协议处理程序将在搜索路径上存在:—
协议处理程序附加协议也可。http, https, file, and jar
没有通过该构造函数执行输入的验证。
protocol
-协议名称的使用。
host
-主机的名称。
port
-主机上的端口号。
file
-主机上的文件
MalformedURLException
-如果一个未知的协议规定。
System.getProperty(java.lang.String)
,
setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory)
,
URLStreamHandler
,
URLStreamHandlerFactory.createURLStreamHandler( java.lang.String)
public URL(String protocol, String host, String file) throws MalformedURLException
protocol
名字,
host
名字,和
file
名称。使用指定的协议的默认端口。
这种方法是等效的论点protocol
,调用四个参数的构造函数host
,-1
,和file
。没有通过该构造函数执行输入的验证。
protocol
-协议名称的使用。
host
-主机的名称。
file
-主机上的文件。
MalformedURLException
-如果一个未知的协议规定。
URL(java.lang.String, java.lang.String, int, java.lang.String)
public URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException
protocol
,
host
,一
URL
对象
port
数,
file
,和
handler
。指定一个
port
数
-1
表明URL应该使用默认端口的协议。指定的
handler
null
表明URL应该使用默认的流处理程序的协议,概述为:java。网。网址# URL(java.lang.string,java.lang.string,int,java。lang.string)
如果处理器不为空,有一个安全经理,安全经理的checkPermission
方法称为一个NetPermission("specifyStreamHandler")
许可。这可能导致SecurityException。没有通过该构造函数执行输入的验证。
protocol
-协议名称的使用。
host
-主机的名称。
port
-主机上的端口号。
file
-主机上的文件
handler
为URL的流处理器。
MalformedURLException
-如果一个未知的协议规定。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许指定一个流处理程序明确。
System.getProperty(java.lang.String)
,
setURLStreamHandlerFactory( java.net.URLStreamHandlerFactory)
,
URLStreamHandler
,
URLStreamHandlerFactory.createURLStreamHandler( java.lang.String)
,
SecurityManager.checkPermission(java.security.Permission)
,
NetPermission
public URL(String spec) throws MalformedURLException
String
表示
URL
对象。
此构造函数等价于一个电话一个null
两参数的构造函数的第一个参数。
spec
-
String
解析URL。
MalformedURLException
-如果没有协议指定,或未知的协议被发现,或是
null
spec
。
URL(java.net.URL, java.lang.String)
public URL(URL context, String spec) throws MalformedURLException
参考解析成方案,权威、路径、查询和片段的部分。如果路径组件是空的,并且该方案、权限和查询组件是未定义的,那么新的地址是对当前文档的引用。否则,在新的网址中使用了规范中的片段和查询部分。<scheme>://<authority><path>?<query>#<fragment>
如果该方案组件被定义在给定的规格和不匹配的上下文的计划,那么新的网址是创建一个绝对的网址的基础上单独的规范。否则,该方案组件是从上下文的地址继承的。
如果权威组件是在规范中存在的话,那么规范被视为绝对的,规范的权威和路径将取代上下文权限和路径。如果在规范中没有权威组件,那么新的地址的权限将从上下文继承。
如果规范的路径组件以一个“/”的“/”然后被视为绝对的路径被视为一个“/”的路径,并取代了上下文路径。
否则,路径为相对路径和附加到上下文路径,如rfc2396。同时,在这种情况下,路径的规范化是通过去除目录所做的更改发生的“,”和“。”。
一个更详细的描述URL解析,指rfc2396。
context
-背景,分析规范。
spec
-
String
解析URL。
MalformedURLException
-如果没有协议指定,或未知的协议被发现,或是
null
spec
。
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler
,
URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)
public URL(URL context, String spec, URLStreamHandler handler) throws MalformedURLException
context
-背景,分析规范。
spec
-
String
解析URL。
handler
为URL的流处理器。
MalformedURLException
-如果没有协议指定,或未知的协议被发现,或是
null
spec
。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许指定一个流处理器。
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler
,
URLStreamHandler.parseURL(java.net.URL, java.lang.String, int, int)
public String getQuery()
URL
查询的一部分。
URL
查询的一部分,如果不存在或
null
public String getPath()
URL
路径的一部分。
URL
路径的一部分,或一个空字符串,如果不存在
public String getUserInfo()
URL
用户信息部分。
URL
用户信息的一部分,或
null
如果不存在
public String getAuthority()
URL
权威部分。
URL
权威部分
public int getPort()
URL
端口号。
public int getDefaultPort()
URL
相关协议的默认端口号。如果URL方案或URLStreamHandler的URL不定义一个默认的端口号,然后返回- 1。
public String getProtocol()
URL
协议名称。
URL
协议。
public String getHost()
URL
主机名称,如适用。主机的格式符合RFC 2732,即字面的IPv6地址,此方法将返回包含在方括号内的IPv6地址(
'['
和
']'
)。
URL
主机名。
public String getFile()
URL
文件名。返回文件的部分将作为
getPath()
相同,加上对
getQuery()
价值的连接,如果任何。如果没有查询部分,此方法将返回相同的结果,
getPath()
。
URL
文件名,或一个空字符串,如果不存在
public String getRef()
URL
。
URL
null
,或者如果不存在
public boolean equals(Object obj)
如果给定的对象不是一个URL,然后这个方法立即返回false
。
两个网址对象是相等的,如果他们有相同的协议,参考等效主机,有相同的端口号在主机上,和相同的文件和片段的文件。
两个主机被认为是等价的,如果两个主机名可以被解决成相同的IP地址;否则,如果任何主机名称不能解决,主机名称必须是平等的,而不考虑到情况下,或两个主机名等于零。
由于主机比较需要名称解析,此操作是一个阻塞操作。
注:定义的行为equals
是已知的与虚拟主机在HTTP不一致。
equals
方法重写,继承类
Object
obj
的URL来做比较。
true
如果对象是相同的;
false
否则。
Object.hashCode()
,
HashMap
public int hashCode()
哈希代码是基于相关的网址比较的所有的网址组件。因此,此操作是一个阻塞操作。
hashCode
方法重写,继承类
Object
URL
哈希代码。
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean sameFile(URL other)
返回true
如果这URL
和other
说法平等不以片段组成的考虑。
other
-
URL
比较。
true
是否引用同一远程对象;
false
否则。
public String toString()
URL
字符串表示形式。字符串是通过调用该对象的流协议处理程序的
toExternalForm
方法创建。
toString
方法重写,继承类
Object
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandler.toExternalForm(java.net.URL)
public String toExternalForm()
URL
字符串。字符串是通过调用该对象的流协议处理程序的
toExternalForm
方法创建。
public URI toURI() throws URISyntaxException
URI
相当于这个URL。这种方法的功能以同样的方式为
new URI (this.toString())
。
请注意,任何URL实例符合RFC 2396可以转换为一个URI。然而,一些网址是没有严格遵守不可以转换成URI。
URISyntaxException
-如果这个URL格式不严格按照rfc2396并不能转换为URI。
public URLConnection openConnection() throws IOException
URLConnection
实例表示的远程对象的连接被称为
URL
。
对URLConnection新实例每次调用这个URL协议处理程序的URLStreamHandler.openConnection(URL)方法时创建的。
应该指出的是,一个URLConnection实例不建立在创造的实际网络连接。这只发生在当打URLConnection.connect()。
如果URL的协议(如HTTP或罐),存在一个公共、专业URLConnection类属于以下其中一个包或一个一个的子包:,,根据,java.net,连接返回将那类。例如,HTTP的你会回来,并将返回一个jarurlconnection罐。
URLConnection
链接的网址。
IOException
如果发生I/O异常。
URL(java.lang.String, java.lang.String, int, java.lang.String)
public URLConnection openConnection(Proxy proxy) throws IOException
openConnection()
,除了连接将通过指定的代理进行;协议处理程序不支持proxing将忽略代理参数,使正常的连接。调用这个方法来取代系统默认的proxyselector设置。
proxy
-代理通过此连接将。如果直接连接是需要的,proxy.no_proxy应指定。
URLConnection
的网址。
IOException
如果发生I/O异常。
SecurityException
-如果一个安全管理是当前和调用者没有权限连接到代理。
IllegalArgumentException
将如果代理是零投入,或代理错误的类型
UnsupportedOperationException
如果实现协议处理程序不支持此方法的类。
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLConnection
,
URLStreamHandler.openConnection(java.net.URL, java.net.Proxy)
public final InputStream openStream() throws IOException
URL
和返回的连接阅读
InputStream
。这是一种速记:
openConnection().getInputStream()
IOException
如果发生I/O异常。
openConnection()
,
URLConnection.getInputStream()
public final Object getContent() throws IOException
openConnection().getContent()
IOException
如果发生I/O异常。
URLConnection.getContent()
public final Object getContent(类[] classes) throws IOException
openConnection().getContent(Class[])
classes
- java类型的数组
IOException
如果发生I/O异常。
URLConnection.getContent(Class[])
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
URLStreamHandlerFactory
。这种方法可称为最多一次在一个给定的java虚拟机。
的URLStreamHandlerFactory
实例是用来从一个协议名称构建流协议处理程序。
如果存在安全管理器,该方法首先调用安全管理器的checkSetFactory
方法确保操作是允许的。这可能导致SecurityException。
fac
-所需的工厂。
Error
-如果应用已建立工厂。
SecurityException
-如果存在一个安全管理及其
checkSetFactory
方法不允许操作。
URL(java.lang.String, java.lang.String, int, java.lang.String)
,
URLStreamHandlerFactory
,
SecurityManager.checkSetFactory()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.