以下是下载一个网页,然后再控制台显示全部的HTML代码的例程,其中使用了String自带的编码方案。
一个问题就是,在处理一个网页的时候,不能知道这个网页的编码到底是是什么。
应该用urlcon.getContentEncoding()函数来取。但是,在CSDN这个网页里面,刚好取不到。
因为我想,它没有把charset放到单独的Meta标签里面。
1 package mynet;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.MalformedURLException;
6 import java.net.URL;
7 import java.util.Date;
8
9 import sun.net.www.protocol.http.HttpURLConnection;
10
11 public class URLDemo {
12 public static void main(String[] args) {
13
14 System.out.println("Starting");
15 int c;
16
17 HttpURLConnection urlcon = null;
18 try {
19 URL url = new URL("http://www.csdn.net");
20 try {
21 urlcon = (HttpURLConnection) url.openConnection();
22 } catch (IOException e) {
23
24 }
25 System.out.println("the date is :" + new Date(urlcon.getDate()));
26 System.out.println("content_type :" + urlcon.getContentType());
27 try {
28 InputStream in = urlcon.getInputStream();
29 int all = in.available();
30 String webpage = null;
31 while (all > 0) {
32 byte[] b = new byte[all];
33 in.read(b);
34 webpage = new String(b, "UTF-8");
35 System.out.println(webpage);
36 all = in.available();
37 Thread.sleep(2000);//给它点下载的时间,每两秒钟读取一次
38 }
39 in.close();
40 System.out.println(webpage);
41 } catch (Exception e) {
42 System.out.println("" + e);
43 }
44
45 } catch (MalformedURLException e) {
46 System.out.println("" + e);
47 }
48
49 }
50
51 }