`
nanapoleon
  • 浏览: 46844 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

URI介绍

    博客分类:
  • java
阅读更多
这期继续网络方面的话题。
学习android,肯定都会知道统一资源标示符URI。其实我对这个中文字面十分不敏感,因为无法形成一个具体抽象的事物,所以,常常URI URL傻傻分不清楚。因为URL的中文是统一资源指示符,啊不对,统一资源...那个,你自己baidu吧。
其实,还是英语最好区分,URI = uniform resource identifier,最后一个词,id嘛(姑且这么理解,差不多,呵呵)。 URL = uniform resource locator。
URI是一个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了用于定位Web资源的足够信息。所以,URL是URI的一个特例,比如这个mailto:cay@horstmann.com,不知道怎么叫吧,他叫URN(name)也是URI的一种。
在java和android中,URI对外的接口是不太一样的,在android中URI的意义非常重大,他是所有资源的标示符(ID),通过URI可找到一个一一对应的具体实体,如文件(file),数据库的表项(content)等,可以说贯穿这个Framework。
这么重要,我们就先来看看URI一般的格式:

[scheme:]schemeSpecificPart[#fragment]  ([...]表示可选)

首先,我查看了下java.net下的URI,它有两个方法isAbsolute()和isOpaque()。
好,先看第一个方法,是否绝对的?
URI分为两大类,绝对URI相对URI
分类方法为:有scheme:开头的就是绝对URI,否则就是绝对URI。(如 file:///sdcard/xxx和../../java/net/Socket.html#Socket())
第二个方法,是否透明?
定义,绝对URI中,schemeSpecificPart不是以/开头,这个URI就是不透明的,如:mailto:cay@horstmann.com
(可以从上面得出树状结构  URI:绝对和相对  绝对:透明和不透明
还有个比较重要的概念,绝对的透明的URI和相对的URI都是分层的(hierarchical)
去看看android的URI api吧,所有is判断都会有。
有了上述概念,看看android中URI的具体类有:OpaqueUri,HierarchicalUri和StringUri。怎么样,能看懂了吧。
我们继续,如果一个URI是分层的,那么这个URI的schemeSpecificPart(一般简称ssp)是如下结构:

[//authority][path][?query] ([...]表示可选)

而对于那些基于服务器的URI来说,authority结构为:

[userinfo@]host[:port]

以上部分是必须记住的,否则你就无法理解一个URI的这正意义。
然后,使用中,URI类的作用之一就是解析标示符并将它们分解成各个组成部分。记住并了解下面的方法吧:
getScheme() getSchemeSpecificPart() getAuthority() getUserInfo() getHost() getPort() getPath() getQuery() getFragment() (其实是有顺序的,你能看出来吗)
好了,所有URI的概念就介绍完了,但对于URI类,另一个作用就是处理绝对URI和相对URI。
如果存在如下的绝对URI:
http://docs.mycompany.com/api/java/net/ServerSocket.html
和一个如下相对URI:
../../java/net/Socket.html#Socket()
那么可以将它们合并成一个绝对URI:
http://docs.mycompany.com/api/java/net/Socket.html#Socket()
这个过程被称为相对URL的转换(resolving)。
与此相反的过程称之为相对化(relativization)。
如,有一个基本URI:
http://docs.mycompany.com/api
和另一个URI:
http://docs.mycompany.com/api/java/lang/String.html
那么相对化之后的URI就是:
http://docs.mycompany.com/api  (没错,是一个相对URI)
对应api就是:
relative = base.relativize(combined);
combined = base.resolve(relative);
好了,看完此文,你会发现URI的所有接口你都能看懂了!
Cheers~

分享到:
评论

相关推荐

    Android中Bitmap、File与Uri之间的简单记录

    下面话不多说了,来一起看看详细的介绍吧 Bitmap、File与Uri 1、将一个文件路径path转换成File String path ; File file = new File(path) 2、讲一个Uri转换成一个path 以选择一张图片为例: String ...

    Javascript URI 解析介绍

    解析URI是一个有意思的东西,之前没有意识到,原来这东西也可以这么复杂。 URI 在维基百科中对于URI的解释是这样子的: 代码如下:  在计算机术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个...

    HTTP网页请求Demo和教程-Python-适合小白

    1、HTTP协议介绍 2、URL、URI介绍 3、请求方式介绍 4、响应码介绍 5、网页数据介绍 6、前面的理论进行实践和调试 7、实战Demo

    Android中Intent的Uri使用

    本文件介绍的是Anroid中Intent的使用方法,从谷歌中搜索内容;浏览网页;显示地图;路径规划;拨打电话;发送短信等简单功能实现

    URI, HTTP 与 HTML安全问题

    介绍URI, HTTP 与 HTML的基本组成,以及各个组成部分存在的各种安全问题,最后介绍了脚本的利用 <script type="text/javascript"> function handleResponse() { alert('this function is called from server....

    详解android 通过uri获取bitmap图片并压缩

    主要介绍了详解android 通过uri获取bitmap图片并压缩的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下

    nginx location中uri的截取的实现方法

    主要介绍了nginx location中uri的截取的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    C# silerlight上传下载介绍

    介绍  Silverlight 2.0 详解WebClient以串形式上传、下载数据;以流方式上传、下载数据  WebClient - 将数据发送到指定 URI或者从指定 URI 接收数据类  DownloadStringAsync(Uri address, Object userToken) ...

    Nginx Location指令URI匹配规则详解小结

    1、介绍 location指令是http模块当中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403、404、500错误处理等。 2、location...

    Android Intent调用 Uri的方法总结

    主要介绍了Android Intent调用 Uri的方法总结的相关资料,这里整理了Android Intent 调用Uri的常用方法,需要的朋友可以参考下

    CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析

    主要介绍了CI框架源码解读之URI.php中_fetch_uri_string()函数用法,结合实例形式分析了CI框架中URL路由机制的原理与相关的config配置文件设置方法,需要的朋友可以参考下

    Android学习笔记之ContentProvider和Uri详解

    本篇文章主要介绍了Android学习笔记之ContentProvider和Uri详解,对于学习Android的朋友具有一定的参考价值,有需要可以可以了解一下。

    Android使用WebView.loadUri()打开网页的方法

    主要介绍了Android使用WebView.loadUri()打开网页的方法,结合实例形式分析了Android中WebView控件的loadUri()打开网页的使用技巧,需要的朋友可以参考下

    android实现Uri获取真实路径转换成File的方法

    主要介绍了android实现Uri获取真实路径转换成File的方法,涉及Android操作路径的相关技巧,需要的朋友可以参考下

    Apache mod_rewrite中的REQUEST_URI使用实例

    主要介绍了Apache mod_rewrite中的REQUEST_URI使用实例,本文使用一个实例讲解如何使用REQUEST_URI,需要的朋友可以参考下

    uriparse-rs:RFC3986 的实现,包括 URI 和 URI 引用

    下面分别介绍这三种类型。 什么是URI ? URI 代表统一资源标识符,用于标识某些资源。 好吧,这可能没有解释太多,所以让我们看一些例子: ftps://example.com/help?q=example 骨灰盒:资源 如您所见,URI 由...

    Android7.0以上Uri转路径的方法实现(已验证)

    主要介绍了Android7.0以上Uri转路径的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Android中Uri和Path之间的转换的示例代码

    本篇文章主要介绍了Android中Uri和Path之间的转换的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    URI操作库-PHP开发

    重点介绍符合RFC3986的简单API,从PSR-7实现UriInterface。完整记录了框架Agnostic Composer的文档,与PSR-2和PSR-4兼容的文档完整的文档可以在uri.thephpleague.com上找到。 您可以在gh-pages分支中为该文档做出...

Global site tag (gtag.js) - Google Analytics