## URL
1. URL 统一资源定位符,标识Internet上某一资源的地址
2. URL组成部分: 协议名称:资源名称
3. java.net包中,URL类表示URL
~~~java
public class Test02 {
/**
* URL常用方法
* @param args
*/
public static void main(String[] args) {
try {
// 创建一个URL实例
URL immoc = new URL("http://www.imooc.com");
// ?后面表示参数,#后面表示描点
URL url = new URL(immoc, "/index.html?username=tom#test");
System.out.println("协议:" + url.getProtocol());
System.out.println("主机:" + url.getHost());
// 如果未指点端口号,则使用默认的端口号,getPort()为-1
System.out.println("端口:" + url.getPort());
System.out.println("文件路径:" + url.getPath() + " 文件名:"
+ url.getFile() + " 相对路径:" + url.getRef() + " 查询字符串:"
+ url.getQuery());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
~~~
## 使用URL读取网页内容
1. 通过URL对象的openStream()方法可以得到指定资源的输入流。
2. 输入流可以读取、访问网络上的资源
~~~java
public class Test03 {
/**使用URL读取页面内容
* @param args
*/
public static void main(String[] args) {
try {
URL url = new URL("http://www.baidu.com");
//获取URL对象资源的字节输入流
InputStream is = url.openStream();
//字节输入流转换为字节输入流
InputStreamReader isr = new InputStreamReader(is,"utf-8");
//添加缓冲
BufferedReader br = new BufferedReader(isr);
String data= br.readLine();
while(data!=null){
System.out.println(data);
data=br.readLine();
}
br.close();
isr.close();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
~~~