HttpURLConnection trong java – Các phương thức cơ bản

Với sự trợ giúp của lớp HttpURLConnection trong java, bạn có thể truy xuất thông tin của bất kỳ URL HTTP nào như thông tin tiêu đề, mã trạng thái, mã phản hồi, v.v.

Xem thêm:

Khái niệm

Java HttpURLConnection là một lớp của java.net package, được sử dụng để thực hiện các yêu cầu HTTP như GET và POST từ một ứng dụng Java tới Server. HttpURLConnection và URLConnection là hai lớp phổ biến được sử dụng để yêu cầu và trả về dữ liệu từ một URL.

Bài viết liên quan:

Các phương thức chính của HttpURLConnection

Một số phương thức quan trọng của lớp HttpURLConnection bao gồm:

disconnect(): Ngắt kết nối với máy chủ.

String getHeaderField(int n): Trả về giá trị của trường header thứ n trong thông điệp.

long getHeaderFieldDate(String name, long Default): Trả về giá trị của trường được đặt tên là “name” được phân tích dưới dạng ngày.

String getHeaderFieldKey(int n): Trả về khóa cho trường header thứ n.

boolean getInstanceFollowRedirects(): Trả về giá trị của trường FollowRedirects của đối tượng HttpURLConnection.

String getRequestMethod(): Lấy phương thức yêu cầu.

int getResponseCode(): Lấy mã phản hồi từ thông điệp phản hồi HTTP.

String getResponseMessage(): Lấy thông điệp phản hồi được gửi kèm theo mã phản hồi từ máy chủ.

static void setFollowRedirects(boolean set): Thiết lập xem có nên tự động theo dõi chuyển hướng HTTP hay không (các yêu cầu với mã phản hồi).

void setInstanceFollowRedirects(boolean followRedirects): Thiết lập xem có nên tự động theo dõi chuyển hướng HTTP hay không (các yêu cầu với mã phản hồi) cho đối tượng HttpURLConnection cụ thể.

void setRequestMethod(String method): Thiết lập phương thức cho yêu cầu URL, một trong các phương thức: GET POST HEAD OPTIONS PUT DELETE TRACE là hợp lệ, tuân thủ theo ràng buộc giao thức.

abstract boolean usingProxy(): Hiển thị xem kết nối có đang đi qua một proxy hay không.

InputStream getErrorStream()

InputStream getErrorStream(): đọc dữ liệu lỗi từ máy chủ khi yêu cầu không thành công.

InputStream errorStream = connection.getErrorStream();

if (errorStream != null) {
    InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
    BufferedReader errorReader = new BufferedReader(inputStreamReader);
    String errorLine;
    while ((errorLine = errorReader.readLine()) != null) {
        System.out.println(errorLine);
    }
}

getFollowRedirects()

static boolean getFollowRedirects(): Trả về giá trị boolean để kiểm tra xem có đang tự động theo dõi chuyển hướng HTTP hay không.

// Mở kết nối 
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Lấy giá trị của FollowRedirects 
boolean followRedirects = connection.getFollowRedirects();

Permission getPermission()

Permission getPermission(): Trả về đối tượng SocketPermission đại diện cho quyền kết nối đến máy chủ và cổng đích.

// Lấy đối tượng Permission 
Permission permission = connection.getPermission();

Cách sử dụng Java HttpURLConnection để gửi yêu cầu GET/POST

Để tạo một yêu cầu GET, chúng ta cần thiết lập phương thức yêu cầu của đối tượng HttpURLConnection thành “GET”. Sau đó, kiểm tra mã phản hồi từ server bằng phương thức getResponseCode(). Nếu mã phản hồi là HttpURLConnection.HTTP_OK (tức là 200), chúng ta có thể đọc dữ liệu bằng cách sử dụng getInputStream().

Ví dụ:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;


public class HttpURLConnectionExample {

    public static void main(String[] args) {
        try {
            //Dia chi URL can gui yeu cau GET
            URL url = new URL("https://ttnguyen.net/category/bai-tap-lap-trinh-huong-doi-tuong-java/");
            //Mo ket noi
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //Dat phuong thuc yeu cau la get
            connection.setRequestMethod("GET");
            
            //connection.setRequestMethod("POST");
            
            //Lay ma trang thai HTTP phan hoi tu may chu
            // 200:OK, 404: khong tim thay, 500: Loi phia may chu
            int responseCode = connection.getResponseCode();
            
            if(responseCode == 200){
                //Doc du lieu phan hoi
                InputStreamReader inputStreamReader = new InputStreamReader(url.openStream());
                BufferedReader reader = new BufferedReader(inputStreamReader);
                String line;
                // doc tung dong
                while((line = reader.readLine()) != null){
                    System.out.println(line);
                }
                
                reader.close();
                
            }else{
                System.out.println("Get request failed. Response Code: " + responseCode);
            }
            //Ngat ket noi
            connection.disconnect();
        } catch (Exception e) {
            
            e.printStackTrace();
        }
    }

Bài tập ví dụ HttpURLConnection

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.Permission;

public class HttpURLConnectionExample {

    public static void main(String[] args) {
        try {
            //Dia chi URL can gui yeu cau GET
            URL url = new URL("https://ttnguyen.net/category/bai-tap-lap-trinh-huong-doi-tuong-java/");
            //Mo ket noi
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            //Doc phan hoi tu may chu
            int responcode = connection.getResponseCode();
            String responseMessage = connection.getResponseMessage();

            // In thông tin phản hồi
            System.out.println("Response Message: " + responseMessage);

            // Lấy giá trị của FollowRedirects 
            boolean followRedirects = connection.getFollowRedirects();
            System.out.println("FollowRedirects: " + followRedirects);

            // Lấy đối tượng Permission 
            Permission permission = connection.getPermission();
            System.out.println("Permisson: " + permission);

            if (responcode == 200) {
                for (int i = 1; i <= 8; i++) {
                    System.out.println(connection.getHeaderFieldKey(i) + " = " + connection.getHeaderField(i));
                }

            } else {
                InputStream errorStream = connection.getErrorStream();

                if (errorStream != null) {
                    InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
                    BufferedReader errorReader = new BufferedReader(inputStreamReader);
                    String errorLine;
                    while ((errorLine = errorReader.readLine()) != null) {
                        System.out.println(errorLine);
                    }
                }
                //Ngat ket noi
            }
            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Trên đây là một số phương thức thường gặp và bài tập ví dụ về HttpURLConnection trong java. Hy vọng những thông tin này sẽ giúp bạn có thêm kiến thức về lập trình mạng. Cảm ơn bạn đã tham khảo trên ttnguyen.net.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em