URL 和 URI 学习

定义

URL: Unifrom Resource Locator 统一资源定位符

URI: Unifrom Resource Identifier 统一资源标识符

URN: Universal Resource Name 统一资源名称

关系

这里首先说明下,URL和URN是URI的一个子集,目前URN还处于试验阶段,这里主要讲解URL和URI.
URI是统一资源标识符,而URL是统一资源定位符。因此可以说每个URL都是URI,但不一定每个URI都是URL.这是因为URI还包括一个子类(URN).

URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是URI的一个特例,它包含了定位Web资源的足够信息。其他URI,比如

    mailto:cay@horstman.com

则不属于定位符,因为根据该标识符无法定位任何资源

用法

URI

URI只是唯一资源标识符,并不包含任何访问资源的方法,它的作用就是解析资源。

URI构成:[scheme:][//authority][path][?query][#fragment]


    URI uriBase = new URI("http://www.somedomain.com/user/info?id=10#ui");
    System.out.println(uriBase.getAuthority());//www.somedomain.com
    System.out.println(uriBase.getScheme());//http
    System.out.println(uriBase.getPath());// /user/info
    System.out.println(uriBase.getPort());// -1
    System.out.println(uriBase.getFragment());// ui
    System.out.println(uriBase.getQuery());//id=10

其实在java中主要就是解析得到资源的scheme query path等字段,当然还有一个最重要的方法toURL得到统一资源定位符

URL

URL是统一资源定位符,URL可以资源,打开一个到达资源的流

Demo:打开百度首页的资源

    URI uri = new URI("https://www.baidu.com/");
    URL url = uri.toURL();
    InputStream in = url.openStream();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    byte[] b = new byte[1024];
    int len = -1;
    while ((len = in.read(b)) != -1) {
        out.write(b, 0, len);
    }
    System.out.println(new String(out.toByteArray()));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 下文是对维基百科中URI介绍的粗略翻译。原文 Uniform Resource Identifier统一资源标识符...
    胡不归vac阅读 866评论 0 0
  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 919评论 0 1
  • 对于URL,大家都比较熟悉,其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途...
    小明yz阅读 648评论 0 0
  • 组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://...
    Palomar阅读 1,604评论 0 6