URI --->统一资源
URL(URI+Location) ---> 统一资源定位
https://hao.360.cn:80/s?ie=utf-8&src=hao_360so_b&shb=1&hsid=3b9182c6b595417b&q=IP
1.https:// 协议
2.hao.360.cn 存放资源的主机地址(域名)
3.:80端口,http默认端口80
4./s?ie=utf-8&src=hao_360so_b&shb=1&hsid=3b9182c6b595417b&q=IP 资源名(相对路径)
创建URL对象
构造方法1:URL(String spec) 绝对路径(自主解析)
构造方法2:URL(URL context, String spec) 相对路径(自主解析)
构造方法3:URL(String protocol, String host, int port, String file,
URLStreamHandler handler) 分别设定
常用方法
"协议:"+url.getProtocol()
"域名:"+url.getHost()
"端口:"+url.getPort()
"数据资源名:"+url.getFile()
"相对路径:"+url.getPath()
"锚点:"+url.getRef()//锚点#aa
"参数:"+url.getQuery()//存在锚点返回null(当做锚点的一部分);不存在返回uname=lp
通过流获取网页资源
openStream (返回InputStream)
获取网页内容
/**
* 通过流获取网页内容
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
public class URL02 {
public static void main(String[] args) throws IOException {
URL url = new URL("http://www.baidu.com");//访问主页(默认资源)
//使用转换流解决乱码
BufferedReader br = new BufferedReader(
new InputStreamReader(
url.openStream(),"utf-8")
);
//输出到文件
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("baidu.html"), "utf-8")
);
byte[] flush1 = new byte[1024];
String msg = null;
while((msg=br.readLine())!=null ){
bw.append(msg);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}