zoukankan      html  css  js  c++  java
  • 使用URL访问网络资源

      
    使用URL访问网络资源
    前言
    今天随手翻起一本书,有一章主要介绍的是URL,里面有个小例子,利用java的URL对象查看新浪首页的源码,感觉挺好玩,就写下了这篇文章。
    还有,今天是2007年的第二天,祝大家在新的一年里,再接再厉,成就新的辉煌!
    一.URL简介
    URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志。
    一个完整的URL包括如下内容:
    1.         应用协议名称,包括http,ftp,file等标志
    2.         资源定位,是由(.)分割等网络路径
    3.         端口号,按照规定,http应用端口是80,telnet协议应用端口是23。
    4.         服务器中的文件路径
    5.         文件中的编码位置
    一个完整的URL如下:
    有些字符在URL中具有特殊含义,基本编码规则如下:
    (1)空格换成加号(+)
    (2)正斜杠分割目录和子目录
    (3)问号(?)分割URL与查询
    (4)百分号(%)指定特殊字符
    (5)#号指定书签
    (6)&号分割参数
    尽管这些字符在URL中具有特殊意义,但有时却需要在URL使用,例如参数名中包含&,这时就需要将这些特殊字符转换成相应的十六进制数。笔者曾经在做web时碰到过这个问题,需要传入的参数包括特殊字符,如”+”,”&”这些,如果不加处理直接传给servlet的话,结果肯定是不正确的,笔者曾经写过专门的函数来处理这个问题,简单的替换函数如:
     str=str.replace(/%/g,"%25");
           str
    =str.replace(/+/g,"%2B");
           str
    =str.replace(/&/g,"%26");
    这里有一个参照表,大家可以根据该表把一些特殊字符转换成其对应的十六进制,然后再进行处理。
    表1 特殊字符的转换
    特殊字符
    十六进制值
    特殊字符
    十六进制值
    +
    %20
    %
    %25
    /
    %wf
    #
    %23
    ?
    %3f
    &
    %26
    二java中使用URL对象获取网络资源
    Java中的URL对象位于java.net包中,具体使用方法大家可以参考其API
    1.           创建一个URL对象
    URL的构造方法很多,最简单的莫过于
    URL aurl = new URl(“http://java.sun.com:80”);
    2.           获得URL对象的各个属性,自己看API
    3.           使用URL来读取WWW的信息
    在创建了一个URL对象之后,就可以利用它来读取资源的内容了,URL使用openStream()方法可以获得它的输入流。下面程序可以读取新浪网首页源码:
                
      try {
                         URL sina
    =new URL("http://www.sina.com.cn/");
                         BufferedReader in
    =new BufferedReader(new InputStreamReader(sina.openStream()));
                         String inputLine;
                         
    while((inputLine=in.readLine())!=null)
                                System.out.println(inputLine);
                         in.close();                     
                  }
     catch (MalformedURLException e) {
                         e.printStackTrace();
                  }
     catch (IOException e) {
                         e.printStackTrace();
                  }
    最后,可以使用URLConnection读取网络资源,也挺简单,大家自己看一下吧。
  • 相关阅读:
    Deep Learning--分布式训练RBM算法框架
    Deep Learning基础理论--Classification RBM
    docker run hangs问题排查记录
    启用k8s metrics server监控
    Infiniband 网络性能测试
    foreman容器化部署
    通过keepalived实现多主集群方案
    工程优化暨babel升级小记
    一次由webview报错引起的追根溯源
    前端基础3:js篇(基础及算法)
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330258.html
Copyright © 2011-2022 走看看