HTTP/2 เป็นเวอร์ชันใหม่ของโปรโตคอล HTTP ปรับปรุงด้านการจัดเฟรมและขนส่งข้อมูลระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ ใน HTTP/2 มีคลาสแยกสำหรับ HTTP Client Requests และ Responses API ใหม่นี้ทำให้การเชื่อมต่อ HTTP ง่ายขึ้น เร็วขึ้น และรองรับแอปพลิเคชันที่ตอบสนองได้ดีขึ้น โดยไม่ต้องพึ่งไลบรารีภายนอก
3 คลาสหลักของ HTTP/2 Client API
- HttpClient: จัดการการสร้างและส่งคำขอ (requests)
- HttpRequest: ใช้สร้างคำขอเพื่อส่งผ่าน HttpClient
- HttpResponse: เก็บการตอบสนองจากคำขอที่ส่งไป
ตัวอย่างการใช้งาน
// สร้าง HttpClient
HttpClient httpClient = HttpClient.newHttpClient();
System.out.println(httpClient.version());
// สร้าง HTTP Request
HttpRequest httpRequest = HttpRequest.newBuilder()
.uri(new URI("https://www.tutorialspoint.com/"))
.GET()
.build();
// ดู headers
Map<String, List<String>> headers = httpRequest.headers().map();
headers.forEach((k, v) -> System.out.println(k + "-" + v));
// ส่งคำขอและรับ response
HttpResponse httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandler.asString());
// แสดง body ของ response
System.out.println("Response: " + httpResponse.body());
หมายเหตุ: ใน Java 9 HTTP/2 Client อยู่ในโมดูล incubator (jdk.incubator.httpclient) ต้องใช้ --add-modules jdk.incubator.httpclient ใน Java 11 ขึ้นไป ย้ายมาอยู่ในมาตรฐานแล้ว (java.net.http)