`
chengxj_1986
  • 浏览: 6289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java.net.URL的URL构建方式

阅读更多
认识IP、认识URL是进行网络编程的第一步。java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。
    一、认识URL

    类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

    简单的可以把URL理解为包含:协议、主机名、端口、路径、查询字符串和参数等对象。每一段可以独立设置。

    应用程序也可以指定一个“相对 URL”,它只包含到达相对于另一个 URL 的资源的足够信息。HTML 页面中经常使用相对 URL.

    相对 URL 不需要指定 URL 的所有组成部分。如果缺少协议、主机名称或端口号,这些值将从完整指定的 URL 中继承。

    由于 URL 不懂 URL 转义,所以它不会识别同一 URL 的对等编码和解码形式。

    注意,URI 类在某些特定情况下对其组成字段执行转义。建议使用 URI 管理 URL 的编码和解码,并使用 toURI() 和 URI.toURL() 实现这两个类之间的转换。

    也可以使用 URLEncoder 和 URLDecoder 类,但是只适用于 HTML 形式的编码,它与 RFC2396 中定义的编码机制不同。

    (以上介绍来自Java API doc)

    二、URL对象的构建

    方式很多,可以看看API文档。

    三、获取URL指定的资源

    下面给个例子,说明如何获取到指定的资源。

    import java.io.*;   
    import java.net.URL;   
    import java.net.URLConnection;   
     
    public class TestURL {   
            public static void main(String[] args) throws IOException {   
                    test4();   
                    test3();   
                    test2();   
                    test();   
            }   
     
            /**  
             * 获取URL指定的资源。  
             *  
             * @throws IOException  
             */   
            public static void test4() throws IOException {   
                    URL url = new URL("http://lavasoft.blog.51cto.com/attachment/200811/200811271227767778082.jpg");   
                    //获得此 URL 的内容。   
                    Object obj = url.getContent();   
                    System.out.println(obj.getClass().getName());   
            }   
     
            /**  
             * 获取URL指定的资源  
             *  
             * @throws IOException  
             */   
            public static void test3() throws IOException {   
                    URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");   
                    //返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。   
                    URLConnection uc = url.openConnection();   
                    //打开的连接读取的输入流。   
                    InputStream in = uc.getInputStream();   
                    int c;   
                    while ((c = in.read()) != -1)   
                            System.out.print(c);   
                    in.close();   
            }   
     
            /**  
             * 读取URL指定的网页内容  
             *  
             * @throws IOException  
             */   
            public static void test2() throws IOException {   
                    URL url = new URL("http://www.hrtsea.com/down/soft/45.htm");   
                    //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。   
                    Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream()));   
                    int c;   
                    while ((c = reader.read()) != -1) {   
                            System.out.print((char) c);   
                    }   
                    reader.close();   
            }   
     
            /**  
             * 获取URL的输入流,并输出  
             *  
             * @throws IOException  
             */   
            public static void test() throws IOException {   
                    URL url = new URL("http://lavasoft.blog.51cto.com/62575/120430");   
                    //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。   
                    InputStream in = url.openStream();   
                    int c;   
                    while ((c = in.read()) != -1)   
                            System.out.print(c);   
                    in.close();   
            }   
    }   


    四、Java所支持的URL类型

    import java.net.URL;   
     
    public class MainClass {   
     
            public static void main(String[] args) {   
     
                    String host = "www.java2s.com";   
                    String file = "/index.html";   
     
                    String[] schemes = {"http", "https", "ftp", "mailto", "telnet", "file", "ldap", "gopher",   
                                    "jdbc", "rmi", "jndi", "jar", "doc", "netdoc", "nfs", "verbatim", "finger", "daytime",   
                                    "systemresource"};   
     
                    for (int i = 0; i < schemes.length; i++) {   
                            try {   
                                    URL u = new URL(schemes, host, file);   
                                    System.out.println(schemes + " is supported\r\n");   
                            } catch (Exception ex) {   
                                    System.out.println(schemes + " is not supported\r\n");   
                            }   
                    }   
            }   
    }   
     
    另外,还可以通过协议处理器自定义协议。
    原文:http://ajava.org/course/net/17179.html
分享到:
评论

相关推荐

    URLSniffer:简单的xposed模块,可从java.net.URL嗅探URL

    URLSniffer是一个用于捕获从java.net.URL嗅探到的URL,并将callig软件包名称和URL记录到logcat和Xposed日志中。 使用DalvikVM在运行Android 4.4.4且允许SELinux设置为允许的Nexus 5上进行构建和测试。 目前,...

    WireMock.Net:WireMock.Net是一个灵活的库,用于使用请求匹配和响应模板对Web HTTP响应进行存根和模拟。 基于http:WireMock.org的功能,但扩展了更多功能

    基于C#.NET版本其模仿基于来自JAVA功能 。 有关更多信息,另请参见以下WIKI页面: 。 主要特点 HTTP响应存根,可在URL /路径,标题,cookie和主体内容模式上匹配 库可用于单元测试和集成测试 作为独立进程,...

    uri:一个纯ClojureClojureScript URI库

    它们都在某种程度上依赖java.net.URI或java.net.URL 。 该库提供了纯Clojure / ClojureScript的替代方案。 请参阅 安装 要安装,请将以下依赖项添加到您的项目或构建文件中: deps.edn: lambdaisland/uri { :...

    Java常用包介绍.pdf

    java.net 包提供了网络功能的类库,包括Socket类、ServerSocket类和URL类等。 10. java.corba 包和 java.corba.orb 包 java.corba 包和 java.corba.orb 包提供了CORBA的实现,允许不同的语言和平台之间的通信。 ...

    精通正则表达式~~~

    正则表达式的注意事项和处理方式... 93 集成式处理... 94 程序式处理和面向对象式处理... 95 查找和替换... 98 其他语言中的查找和替换... 100 注意事项和处理方式:小结... 101 字符串,字符编码和匹配模式....

    Struts in Action中文版

    3. 构建一个简单应用....................................................................................60 3.1. 被支柱支撑的支柱......................................................................

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    struts in Action

    3. 构建一个简单应用....................................................................................60 3.1. 被支柱支撑的支柱............................................................................

    Java精华(免费版)

    以java.net.URL类的构建器(constructor)为例,它的每一个构建器都会抛出MalformedURLException。MalformedURLException就是一种checked exception。设想一下,你有一个简单的程序,用来提示用户输入一个URL,然后...

    Java加密与解密的艺术

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    java中用URLConnection类post方式提交表单.pdf

    URLConnection 是 Java.net 包中的一个类,用于表示到 URL 的连接。该类提供了一些方法来处理 HTTP 请求,例如 setRequestMethod()、setRequestProperty()、connect() 等。 在我们的示例代码中,我们定义了一个 ...

    telnetd-x:自动从code.google.comptelnetd-x导出

    telnetd-x TelnetD扩展 ...更加“开放”和灵活的telnetd构建,将其添加到开源telnetd库中。 源代码被伪造。 此版本修复了原始telnetd 2.0组件的线程读/... &lt;url&gt;http://download.java.net/maven/2/&lt;/url&gt; &lt;/reposit

    一个简单的java爬虫产品

     在创建索引的时候,需要将网页的URL和网页的内容传到相应的方法中,当然URL和内容是要对应的,也许是经验太少吧,我采取的是通过构建一个JavaBean的方式来传递的,不知道大家有没有更好的方法    2.关于要创建...

    JAVA上百实例源码以及开源项目源代码

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    Java加密与解密的艺术配书源代码

    综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    java课程设计

    import java.net.MalformedURLException; class SoundThread implements Runnable{ AudioClip chosenClip; static boolean isplay=true; static boolean flag=true; public void stopSoundThread(){flag=false;...

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    单点登录源码

    - 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...

Global site tag (gtag.js) - Google Analytics