Java - Hướng Dẫn Download Trang Web Sử Dụng URL Class

Ngôn ngữ Java cung cấp sẵn URL class giúp lập trình viên có thể dễ dàng thực hiện các tác vụ liên quan tới network trong đó bao gồm cả việc tải một trang web. Trong bài viết này chúng ta sẽ tìm hiểu cách viết code Java để tải một trang web sử dụng class này.

Code Java Tải Trang Web Sử Dụng URL Class

Đoạn code sau sử dụng class URL để thực việc tải mã lệnh HTML của trang web tại địa chỉ URL http://www.codehub.vn:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class Main {

    public static void main(String[] args) throws MalformedURLException, IOException {

        BufferedReader br = null;

        try {

            URL url = new URL("http://www.codehub.vn");
            br = new BufferedReader(new InputStreamReader(url.openStream()));

            String line;

            StringBuilder sb = new StringBuilder();

            while ((line = br.readLine()) != null) {

                sb.append(line);
                sb.append(System.lineSeparator());
            }

            System.out.println(sb);
        } catch {

            if (br != null) {
                br.close();
            }
        }
    }
}

Để hiểu chi tiết về đoạn code trên đọc tiếp phần phân tích code sau đây.

Phân Tích Code

Ở 2 dòng code đầu tiên bên trong try block phía trên chúng ta thực hiện việc khởi tạo instance của class URL và sau đó gọi phương thức .openStream() của class này để bắt đầu tạo kết nối tới địa chỉ URL http://www.codehub.vn. Phương thức openStream() sẽ trả về một instance của class InputStream:

URL url = new URL("http://www.codehub.vn");
...url.openStream()...

Do việc kết nối tới một trang web có thể gặp phải lỗi như trục trặc về đường truyền internet hay web server của trang này không hoạt động, hoặc chúng ta gõ sai địa chỉ URL... nên chúng ta cần sử dụng try...catch block khi sử dụng method .openStream():

...
        try {
            ...
        } catch {
            if (br != null) {
                br.close();
            }
        }
...

Tiếp theo chúng ta sử dụng InputStreamReader class để xử lý dữ liệu trả về. InputStreamReader sẽ chuyển dữ liệu theo định dạng byte về dạng ký tự để chúng ta có thể đọc được:

URL url = new URL("http://www.codehub.vn");
...new InputStreamReader(url.openStream()...

Kết hợp sử dụng class BufferedReader với InputStreamReader sẽ giúp việc đọc dữ liệu trong Java hiệu quả hơn :

br = new BufferedReader(new InputStreamReader(url.openStream()));

Tiếp theo để đọc dữ liệu dạng ký tự lưu trữ trong br chúng ta sử dụng StringBuilder:

String line;

StringBuilder sb = new StringBuilder();

while ((line = br.readLine()) != null) {

    sb.append(line);
    sb.append(System.lineSeparator());
}

Đoạn code trên sẽ đọc từng dòng dữ liệu của br và in ra màn hình.

Thêm Bình Luận: