美文网首页
URL 和 URI 学习

URL 和 URI 学习

作者: gsonliu | 来源:发表于2016-04-26 19:45 被阅读181次

    定义

    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()));
    

    相关文章

      网友评论

          本文标题:URL 和 URI 学习

          本文链接:https://www.haomeiwen.com/subject/uctcrttx.html