CodeGym/Khóa học Java/Mô-đun 3/Tạo yêu cầu với HttpRequest

Tạo yêu cầu với HttpRequest

Có sẵn

các phương thức newBuilder(), build()

Lớp HttpRequest được sử dụng để mô tả một yêu cầu http, rất dễ hiểu từ tên của nó. Bản thân đối tượng này không làm gì cả, nó chỉ chứa nhiều thông tin khác nhau về yêu cầu http. Do đó, như bạn có thể đã đoán, mẫu Builder cũng được sử dụng để tạo nó.

HttpRequest request = HttpRequest.newBuilder()
	.method1()
	.method2()
	.methodN()
    .build();

Giữa các lần gọi phương thức newBuilder()build(), bạn cần gọi tất cả các phương thức để xây dựng một đối tượngHttpRequest.

Một ví dụ về một yêu cầu đơn giản trông như thế này:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(“http://codegym.cc”))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

Bạn có thể tìm thấy tất cả các phương thức của lớp HttpRequest tại liên kết trong tài liệu chính thức .

Và sau đó chúng tôi sẽ phân tích phổ biến nhất trong số họ.

phương thức uri()

Sử dụng phương thức uri() , bạn có thể đặt URI (hoặc URL) mà yêu cầu http sẽ được gửi tới. Ví dụ:

HttpRequest request = HttpRequest.newBuilder()
    .uri( URI.create(“http://codegym.cc”) )
    .build();

Nhân tiện, bạn có thể làm cho mã này ngắn hơn một chút bằng cách chuyển trực tiếp URI tới phương thức newBuilder() :

HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();

Quan trọng! Một URI có thể được tạo theo hai cách:

  • newURI(Chuỗi)
  • URI.create(Chuỗi)

Cách thứ hai là tốt hơn. Thật không may, cách đầu tiên không tốt lắm, bởi vì hàm tạo URI được khai báo là public URI(String str) throws URISyntaxExceptionURIyntaxException là một ngoại lệ được kiểm tra.

Các phương thức GET(), POST(), PUT(), DELETE()

Bạn có thể đặt phương thức yêu cầu http bằng các phương pháp sau:

  • LẤY()
  • BƯU KIỆN()
  • ĐẶT()
  • XÓA BỎ()

Đây là giao diện của một yêu cầu GET đơn giản:

HttpRequest request = HttpRequest.newBuilder()
  .uri(new URI("https://codegym.cc"))
  .GET()
  .build();

phiên bản() phương pháp

Bạn cũng có thể đặt phiên bản giao thức HTTP. Chỉ có 2 lựa chọn:

  • HttpClient.Version.HTTP_1_1
  • HttpClient.Version.HTTP_2

Giả sử bạn muốn tạo một yêu cầu bằng giao thức HTTP/2, thì bạn sẽ cần phải viết:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

Rất đơn giản phải không nào? :)

phương thức hết thời gian ()

Bạn cũng có thể đặt thời gian thực hiện truy vấn. Nếu nó vượt qua và yêu cầu không bao giờ được hoàn thành, một HttpTimeoutException sẽ được đưa ra .

Thời gian được đặt bằng cách sử dụng đối tượngkhoảng thời giantừ API Ngày giờ Java. Ví dụ:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

Sự hiện diện của phương thức này cho thấy rằng các lớp HttpClientHttpRequest có thể thực hiện nhiều tác vụ khác nhau. Hãy tưởng tượng rằng bạn đang thực hiện một yêu cầu và một điều gì đó đã xảy ra với mạng và nó kéo dài 30 giây. Sẽ hữu ích hơn nhiều nếu ngay lập tức nhận được một ngoại lệ và phản ứng với nó một cách chính xác.

phương thức tiêu đề ()

Bạn cũng có thể thêm bất kỳ số lượng tiêu đề nào vào bất kỳ yêu cầu nào. Và nó dễ dàng để làm như bất cứ điều gì khác. Có một phương pháp đặc biệt cho việc này - header() . Ví dụ:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .header("name1", "value1")
   .header("name2", "value2")
   .GET()
   .build();

Có một cách khác để đặt nhiều tiêu đề cùng một lúc. Ví dụ, nó có thể hữu ích nếu bạn chuyển đổi một danh sách các tiêu đề thành một mảng:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("name1", "value1", "name2", "value2")
   .GET()
   .build();

Mọi thứ cơ bản đều đơn giản.

Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào