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:
1. 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:
- Xử lý dữ liệu theo phương thức post, get và hiển thị dữ liệu dạng xml
2. 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.
2.1 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); } }
2.2 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();
2.3 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();
3. 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(); } }
4. 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.