`
- 浏览:
48133 次
- 性别:
- 来自:
西安
-
这期继续网络方面的话题。
学习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~
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
下面我们将详细介绍如何编写一个方法来根据给定的`Uri`获取其对应的文件系统路径。 ```java public static String getRealFilePath(final Context context, final Uri uri) { if (uri == null) return null; ...
一、URI 介绍 URI(Uniform Resource Identifier,统一资源标识符)是一种用于标识网络资源的字符串。URI 由三部分组成:scheme、authority 和 path。scheme 是 URI 的协议部分,authority 是 URI 的认证部分,path...
本文将详细介绍如何利用`Intent`结合`Uri`在Android应用中实现多种实用功能,如:网络搜索、网页浏览、地图显示、路径规划、电话拨打及短信发送等。 #### 知识点详解 ### 1. 使用`Intent`实现Google搜索 通过创建...
下面话不多说了,来一起看看详细的介绍吧 Bitmap、File与Uri 1、将一个文件路径path转换成File String path ; File file = new File(path) 2、讲一个Uri转换成一个path 以选择一张图片为例: String ...
本文将详细介绍如何使用URI加载图像资源,以及通过XAML和代码两种方式引用这些资源。 首先,让我们理解URI的基本结构。在WPF中,图像资源的URI通常以`pack://`开头,这代表了“打包”协议,它是专为WPF设计的。接着...
本文详细介绍了 Delphi-XE5 开发 Android 应用时关于 URI 的基本概念、组成结构、配置方法以及实际应用场景。通过理解这些知识点,开发者能够更加高效地利用 URI 实现跨应用间的数据共享功能。同时,本文还提供了...
下面将详细介绍如何实现这一功能。 1. **理解Uri** Uri是Android中用于表示资源位置的数据结构,它包含了访问特定资源所需的所有信息,如协议、服务器地址、路径等。在TextView中,Uri通常以超链接的形式存在,...
JavaScript URI(统一资源标识符)解析是一个关键的网络编程概念,尤其在开发Web应用程序时。URI是用于唯一识别互联网上资源的字符串,它允许通过特定的协议与这些资源进行交互。根据维基百科的定义,URI包括了资源...
本篇文章主要介绍了 Android 中 Uri 和 Path 之间的转换的示例代码,通过实践和代码分析,总结出 Uri 和 Path 之间的转换方法和注意事项。 一、 Uri 和 Path 的基本概念 在 Android 中,Uri 表示Uniform Resource ...
本文将详细介绍`QUERY_STRING`、`REQUEST_URI`、`SCRIPT_NAME`和`PHP_SELF`四个关键服务器变量,并通过实例展示它们的使用方法。 #### 1. $_SERVER["QUERY_STRING"] **说明:** `QUERY_STRING`用于获取URL中的查询...
1、HTTP协议介绍 2、URL、URI介绍 3、请求方式介绍 4、响应码介绍 5、网页数据介绍 6、前面的理论进行实践和调试 7、实战Demo
下面我们将详细介绍如何将图片文件的路径地址转换为 Uri,並且从 Uri 中获得图片文件的路径地址。 一、将图片文件的路径地址转换为 Uri 在 Android 中,我们可以使用 ContentResolver 将图片文件的路径地址转换为 ...
6. `README.md`: 项目的介绍和使用指南。 7. `LICENSE`: 许可文件,解释项目使用的开源许可。 使用`uriparser`的Rust绑定,开发者可以进行以下操作: - 解析URI字符串:将URI字符串分解成各个组件,如协议、主机名...
RFC 3986还介绍了URI的解析和组合规则,如何从一个完整的URI中提取各个组件,并且如何将这些组件组合成新的URI。这涉及到URI的正常化处理,比如消除不必要的斜杠、转换相对路径为绝对路径等。此外,文档还讨论了URI...
介绍URI, HTTP 与 HTML的基本组成,以及各个组成部分存在的各种安全问题,最后介绍了脚本的利用 <script type="text/javascript"> function handleResponse() { alert('this function is called from server....
本文将详细介绍如何通过uri获取bitmap图片并压缩。 首先,让我们来看看 Media.getBitmap() 方法的源码: ```java public static final Bitmap getBitmap(ContentResolver cr, Uri url) throws ...
文档介绍的是Cisco Jabber客户端通过移动远程访问(Mobile Remote Access, MRA)实现与不同组织的用户进行SIP URI呼叫的配置过程。该过程涉及到Cisco统一通信管理器(Cisco Unified Communications Manager, CUCM)和...
本篇将详细介绍如何使用System.Uri将相对URL转换为绝对地址。 首先,了解什么是相对URL和绝对URL。绝对URL是包含完整协议(如http://或https://)、主机名(如www.example.com)、路径(如/path/to/page.html)和可...