URI URL

读书笔记:

URL URI 区分:
URL (uniform resource localtor)统一资源定位符,URI(uniform resource identifier)统一资源标识符。
URI 是个纯粹的语法结构,用于指定标识web资源的字符串的各个不同部分,URL 是URI的一个特例,它包含定位web资源的足够信息。其它URI 比如:
mailto:cay@horestmann.com
这个不属于定位符,因为根据它我们无法定位任何数据,像这样的URI我们称之为URN 统一资源名称。
在java类库中,URI不包含任何用于访问资源的方法,它唯一的作用就是解析。相反,URL类可以打开一个到达资源的流,因此URL类只能作用于那些java类库知道
该如何处理的模式,例如http: https ftp 本地文件系统, jar文件。

uri规范给出了标识这些标识符的规则,一个uri具有以下的语法:
【scheme:】schemeSpecificPart[#fragment]

schemeSpecificPart具有以下结构:
[//authority][path][?query]
对于那些基于服务器的 URI authority 部分采用了以下的形式:
【user-info@】host[:port]
当然 RFC 2396 还支持一种基于注册表的机制,此时authority采用了不同的格式,不过不做讨论。

uri是分层的。

包含scheme:部分的uri被称为绝对的URI 否则就被称为相对的URI。

如果绝对的URI的schemeSpecificPart不是以/开头的,我们就称它不是透明的。例如:
mailto:cay@horstmann.com 这里cay@....不是以/开头的所以我们称它是不透明的。

 

uri类的作用之一就是解析标识符并将它分解成各种不同的组成部分。
getScheme
getSchemeSpecificPart
getAuthority
getuserInfo
getHost
getPort
getPath
getQuery
getFragment

uri类的另一个作用是处理绝对的标识符和相对的标识符。如果存在一个如下的绝对的uri
http://docs.mycompany.com/apo/java/net/serversocket.html
和一个相对的uri
../.../java/net/socket.html#Socket()
那么可以将他们合成一个绝对的uri:
http://docs.mycompany.com/apo/java/net/serversocket.html#socket()
被称为相对URL的转换。
与此相反的过程称为相对化。

反过来就是相对化。

relative=base.relativize(combined)
combined=base.resolve(relative)

如果想从web资源获得更多的信息,那么应该使用URLConnection 能得到比url类更多的控制。
想操作一个URLConnection对象必须安排以下操作步骤:
1。调用URL类中的openConnection方法获得URLConnection对象。
URLConnection connection=url.openConnection();
2.使用以下的方法设置任意的请求属性:
setDoinput();
setDoOutput
setIfModifiedSince
setUseCaches
setAllowUserInteraction
setRequestProperty
setConnecttimeout
setReadTimeout

3.调用connect方法连接远程资源:
connection.connect();
除了与服务器建立套接字连接以外,该方法还可用于向服务器查询头信息。
4。与服务器建立连接后,你可以查询头信息。
getHeaderfieldKey和getHeaderfield两个方法列巨额了消息头的所有字段

5。最后访问资源 使用getInputStream方法获得一个输入流于url类中的openStream方法返回的流相同,另一个方法getContent在实际的操作中并不是很有用。
由标准内容类型:(如:text/plain和image/gif)所返回的对象需要使用com.sun层次结构中的类进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值