使用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
"
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
表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()方法可以获得它的输入流。下面程序可以读取新浪网首页源码:
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
最后,可以使用URLConnection读取网络资源,也挺简单,大家自己看一下吧。