`
nanapoleon
  • 浏览: 48133 次
  • 性别: 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 根据uri获取真实路径

    下面我们将详细介绍如何编写一个方法来根据给定的`Uri`获取其对应的文件系统路径。 ```java public static String getRealFilePath(final Context context, final Uri uri) { if (uri == null) return null; ...

    Android如何通过URI获取文件路径示例代码

    一、URI 介绍 URI(Uniform Resource Identifier,统一资源标识符)是一种用于标识网络资源的字符串。URI 由三部分组成:scheme、authority 和 path。scheme 是 URI 的协议部分,authority 是 URI 的认证部分,path...

    Android中Intent的Uri使用

    本文将详细介绍如何利用`Intent`结合`Uri`在Android应用中实现多种实用功能,如:网络搜索、网页浏览、地图显示、路径规划、电话拨打及短信发送等。 #### 知识点详解 ### 1. 使用`Intent`实现Google搜索 通过创建...

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

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

    WPF之Uri加载图片

    本文将详细介绍如何使用URI加载图像资源,以及通过XAML和代码两种方式引用这些资源。 首先,让我们理解URI的基本结构。在WPF中,图像资源的URI通常以`pack://`开头,这代表了“打包”协议,它是专为WPF设计的。接着...

    Delphi-XE5-开发 Android URI简介

    本文详细介绍了 Delphi-XE5 开发 Android 应用时关于 URI 的基本概念、组成结构、配置方法以及实际应用场景。通过理解这些知识点,开发者能够更加高效地利用 URI 实现跨应用间的数据共享功能。同时,本文还提供了...

    Android识别TextView的Uri并在自己的应用程序中打开

    下面将详细介绍如何实现这一功能。 1. **理解Uri** Uri是Android中用于表示资源位置的数据结构,它包含了访问特定资源所需的所有信息,如协议、服务器地址、路径等。在TextView中,Uri通常以超链接的形式存在,...

    Javascript URI 解析介绍

    JavaScript URI(统一资源标识符)解析是一个关键的网络编程概念,尤其在开发Web应用程序时。URI是用于唯一识别互联网上资源的字符串,它允许通过特定的协议与这些资源进行交互。根据维基百科的定义,URI包括了资源...

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

    本篇文章主要介绍了 Android 中 Uri 和 Path 之间的转换的示例代码,通过实践和代码分析,总结出 Uri 和 Path 之间的转换方法和注意事项。 一、 Uri 和 Path 的基本概念 在 Android 中,Uri 表示Uniform Resource ...

    PHP获取当前url路径的函数及服务器变量QUERY_STRING、REQUEST_URI

    本文将详细介绍`QUERY_STRING`、`REQUEST_URI`、`SCRIPT_NAME`和`PHP_SELF`四个关键服务器变量,并通过实例展示它们的使用方法。 #### 1. $_SERVER["QUERY_STRING"] **说明:** `QUERY_STRING`用于获取URL中的查询...

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

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

    android图片文件的路径地址与Uri的相互转换方法

    下面我们将详细介绍如何将图片文件的路径地址转换为 Uri,並且从 Uri 中获得图片文件的路径地址。 一、将图片文件的路径地址转换为 Uri 在 Android 中,我们可以使用 ContentResolver 将图片文件的路径地址转换为 ...

    uriparser:uriparser库的Rust绑定

    6. `README.md`: 项目的介绍和使用指南。 7. `LICENSE`: 许可文件,解释项目使用的开源许可。 使用`uriparser`的Rust绑定,开发者可以进行以下操作: - 解析URI字符串:将URI字符串分解成各个组件,如协议、主机名...

    RFC 3986:2005 Uniform Resource Identifier (URI):Generic Syntax -

    RFC 3986还介绍了URI的解析和组合规则,如何从一个完整的URI中提取各个组件,并且如何将这些组件组合成新的URI。这涉及到URI的正常化处理,比如消除不必要的斜杠、转换相对路径为绝对路径等。此外,文档还讨论了URI...

    URI, HTTP 与 HTML安全问题

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

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

    本文将详细介绍如何通过uri获取bitmap图片并压缩。 首先,让我们来看看 Media.getBitmap() 方法的源码: ```java public static final Bitmap getBitmap(ContentResolver cr, Uri url) throws ...

    Cisco Jabber SIP URI呼叫

    文档介绍的是Cisco Jabber客户端通过移动远程访问(Mobile Remote Access, MRA)实现与不同组织的用户进行SIP URI呼叫的配置过程。该过程涉及到Cisco统一通信管理器(Cisco Unified Communications Manager, CUCM)和...

    C#利用System.Uri转URL为绝对地址的方法

    本篇将详细介绍如何使用System.Uri将相对URL转换为绝对地址。 首先,了解什么是相对URL和绝对URL。绝对URL是包含完整协议(如http://或https://)、主机名(如www.example.com)、路径(如/path/to/page.html)和可...

Global site tag (gtag.js) - Google Analytics