`
天使的左手
  • 浏览: 55824 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

URL和URI

    博客分类:
  • java
阅读更多
    private static void getDataFromURL() throws MalformedURLException, IOException
    {
        // System.getProperties().put("http.proxyHost", "someProxyURL");
        // System.getProperties().put("http.proxyPort", "someProxyPort");

        URL url = new URL("http://liuxi1024.iteye.com/blog/519047");
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

        // 设置用户代理头字段,不然iteye.com站点不会给我们返回数据
        httpConn.addRequestProperty("User-Agent", "Mozilla");
        httpConn.connect();
        // 获得所有响应头
        Map<String, List<String>> headers = httpConn.getHeaderFields();
        for (String key : headers.keySet())
        {
            System.out.println(key + ": " + headers.get(key));
            if ("Content-Type".equalsIgnoreCase(key))
            {
                List<String> values = headers.get(key);
                System.out.println("Found: " + values);
                String contentType = values.get(0);
                String[] parts = contentType.split(";");
                String charset = "";
                if (parts.length > 1)
                {
                    charset = parts[1].trim();
                    charset = charset.substring(charset.lastIndexOf("=") + 1);
                }
                System.out.println("Charset: " + charset);
            }
        }
        // 获得输入流
        InputStream in = httpConn.getInputStream();
        int data = 0;
        while (-1 != (data = in.read()))
            System.out.write(data);
        System.out.flush();
        in.close();
    }

    private static void getResource2() throws URISyntaxException
    {
        // URI 统一资源标识符 用于标识一个资源,只要用于资源的解析操作
        // URL 统一资源定位符 用于定位一个资源,不仅可以用于解析资源,还可以获取一个资源的内容
        URL url = URLOrURI.class.getResource("tu hao.txt");
        // 结果:file:/C:/xxx/workspace/classloader/bin/com/classloader/tu%20hao.txt
        // 会将返回结果中的空格、非ascii码字符进行转义
        System.out.println(url);

        URI uri = url.toURI();
        // 结果:/C:/xxx/workspace/classloader/bin/com/classloader/tu hao.txt
        // 如果要获得转义前的字符串,可以调用url的toURI获得对应的URI,然后调用getPath即可
        // URI的getPath方法会将结果字符串进行解码
        System.out.println(uri.getPath());

        // 结果:file:/C:/xxx/workspace/classloader/bin/com/classloader/%e5%9c%9f%e8%b1%aa.txt
        url = URLOrURI.class.getResource("土豪.txt");
        System.out.println(url);
    }

    private static void getResource()
    {
        URL url = URLOrURI.class.getResource("/");
        // 结果:file:/C:/xxx/workspace/classloader/bin/ 相对classpath根目录
        // 如果classpath中还有其他目录存在当前项目的classes目录之前,
        // 则会优先返回其他目录
        // 由于class.getResource真正调用的是classloader.getResource,
        // 而classloader.getResource又会委托给父classloader去查找resource
        // 所以如果java/jdk**/jre下存在一个classes目录,
        // 这个方法会返回java/jdk**/jre/classes目录
        System.out.println(url);

        url = URLOrURI.class.getResource("");
        // 结果:file:/C:/xxx/workspace/classloader/bin/com/classloader/ 相对当前包目录
        System.out.println(url);

        url = URLOrURI.class.getClassLoader().getResource("");
        // 结果:file:/C:/xxx/workspace/classloader/bin/ 相对classpath根目录
        System.out.println(url);

        url = URLOrURI.class.getClassLoader().getResource("/");
        // 结果:null
        System.out.println(url);
    }
分享到:
评论

相关推荐

    URL和URI使用指南

    ### URL和URI使用指南 #### 一、引言 在当今互联网时代,了解如何通过URL(Uniform Resource Locator,统一资源定位符)和URI(Uniform Resource Identifier,统一资源标识符)来获取网络上的数据至关重要。本指南...

    URI,URL常识

    ### URI与URL的基础概念 #### 一、URI(Uniform ...- **总结**:在日常使用中,人们经常将URL和URI这两个术语互换使用,但在技术上,它们有着明确的区别。理解这些概念对于正确地使用和构建互联网资源至关重要。

    Boost.URL是一个用于操作统一资源标识符(URI)和定位器(URL)的库。.zip

    在C++程序中,与URI和URL相关的任务通常涉及字符串操作,而Boost.URL库则为这些任务提供了高级抽象,避免了底层的字符串处理复杂性。 Boost.URL库的核心功能包括: 1. **解析**: Boost.URL库可以将一个完整的URL...

    URI和URL的区别

    二、URI和URL的区别及关系 简而言之,URI是标识某一个资源,而URL用位置来标识一个资源。 一、URI、URL和URN Web上地址的基本形式是URI,它有多种形式:常见的有URL和URN。 URI = Universal Resource Identifier ...

    url和uri区别

    URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)是互联网上资源定位的两种重要概念,它们之间存在着密切的关系,但又有明显的区别。 URI是统一资源标识符,它是一个全局唯一的字符串,用于...

    URI和URL区别 .

    在探讨“URI和URL区别”这一主题时,我们首先需要明确这两个概念的基本定义与功能,进而深入理解它们之间的差异以及在互联网技术中的具体应用。URI(Uniform Resource Identifier,统一资源标识符)和URL(Uniform ...

    解析URI与URL之间的区别与联系

    URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)是互联网上资源定位的两种重要概念。它们虽然在功能上有所重叠,但有着明确的区别。 首先,URI,统一资源标志符,是一个抽象的概念,用于唯一...

    HTML基础:字符实体、URL规范与语义化标记的应用

    本文详细介绍了HTML中的字符实体及其重要性,解释了URL的概念、格式与区分URL和URI的关系。此外还探讨了语义化标记的优势,比如维护代码简便性和降低交流的成本,同时对于SEO优化进行了基本概述。 适合人群:初学...

    关于URI和URN,URL和java中对应的类.pdf

    在Java中,URI和URL被分别封装在`java.net.URI`和`java.net.URL`类中。URI 类是一个抽象的概念,主要用于解析和表示URI,但不涉及网络访问。它支持相对URI,并且更加符合相关规范。而URL类则更偏向于实际的网络操作...

    java-web课本课后简答题.pdf

    一、URL和URI * URL(Uniform Resource Locator)称为统一资源定位符,通常由四部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。 * URI(Uniform Resource Identifier)称为统一资源标识符,...

    关于URI和URN,URL和java中对应的类.docx

    在Java中,URI和URL是两个不同的类,都位于java.net包下。URI类更加抽象,主要用于资源的标识和解析,不涉及实际的资源访问。URL类则提供了对资源的实际访问能力,它可以用来打开网络连接,下载或上传数据。URI类在...

    适合Java网络编程学习的朋友

    Java网络编程是Java开发中的重要领域,它涵盖了各种网络通信技术,包括TCP和UDP套接字编程、URL和URI的理解以及如何实现一个实用的下载程序。让我们深入探讨这些主题。 首先,TCP(传输控制协议)是一种面向连接的...

    《JavaWeb编程技术》课后习题答案.docx

    1. URL 和 URI 的区别: URL(Uniform Resource Locator)称为统一资源定位符,通常由四部分组成:协议名称、页面所在主机的 DNS 名、可选的端口号和资源的名称。URI(Uniform Resource Identifier)称为统一资源...

    对java网络编程里的URL、URI研究

    对java网络编程里的URL、URI研究,如果需要我也可以将研究上篇传上来

    Nginx服务器中的location配置详解

    = : 表示精确的URI匹配(有兴趣的同学可以看一下url和uri的区别) ~: 表示区分大小写的正则匹配 ~*:表示不区分大小写的正则匹配 !~ && !~*:表示区分大小写不匹配的正则和不区分大小写的不匹配的正则 /:通用匹配...

    Uri一个URI处理库

    - **创建和解析URI**:Uri库允许通过字符串或数组创建URI实例,并能解析出各个部分,如scheme(协议)、authority(授权部分,包括用户信息、主机和端口)、path(路径)、query(查询字符串)和fragment(片段...

    Java路径问题汇总[文].pdf

    Java路径问题在编程中是一个常见的挑战,特别...总的来说,处理Java路径问题需要深入理解URL、URI和File类的特性,以及它们在不同场景下的行为差异,同时要注意编码和解码的正确性,确保路径在各种操作中都能正确解析。

    Python库 | rfc3986-1.1.0-py2.py3-none-any.whl

    URI是互联网上资源的全局唯一标识,包括URL(统一资源定位符)和URN(统一资源名称)。RFC 3986详述了URI的组成部分,包括: 1. **scheme**:如http、https、ftp等,表示资源的获取方式。 2. **authority**:通常...

    java网络编程

    本书重点介绍了JDK 1.4和1.5(即J2SE 5)中的网络API更新,包括TCP和UDP socket、服务器socket、URL和URI处理、组播、以及特殊用途的API如JavaMail。它不仅讲解API,还通过丰富的示例代码展示了API的实际应用,涉及...

Global site tag (gtag.js) - Google Analytics