URL 网络编程
URL 编程
URL (Uniform Resource Locator) 中文名为统一资源定位符, 有时也被俗称为网页地址, 表示为互联网上的资源,如网页或者 FTP 地址.
URL可以分为如下几个部分: protocol://host:port/path?query#ref
在 java.net 包中定义了 URL 类和 URLConection 类使编程者方便地利用 URL 在 Internet 上进行网络通信
Reference: Java URL 处理
URL url = new URL("http://blog.smallcpp.cn/archives.html"); URLConnection uc = url.openConnection(); InputStream is = uc.getInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024 * 8]; int len = 0; while ((len = is.read(buffer)) != -1) { bos.write(buffer, 0, len); } System.out.println(bos.toString()); bos.close(); is.close();
处理 gzip 压缩的网页
ContentEncoding 为 text/html 或其他类似的文本直接打印出来就行, 如果网页是经过 gzip 压缩的话, 需要再转化一下.
上程序:
String url = "http://www.baidu.com"; URL cumtURL = new URL( url); HttpURLConnection cumtConnection = (HttpURLConnection)cumtURL.openConnection(); cumtConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"); System.out.println(cumtConnection.getContentEncoding()); InputStream urlStream = new GZIPInputStream(cumtConnection.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(urlStream,"gb2312")); String line = ""; while((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); urlStream.close();
多线程下载
关键就是 URLConnection 里有个 setRequestProperty
方法, 可以设置请求头的 Range
参数, 即指定指示文件的起始位置.
conn.setRequestProperty("Range", "bytes=" + startIndex + "-" + endIndex);
☠