เมธอด newBuilder(), build()
คลาสHttpRequestใช้เพื่ออธิบายคำขอ http ซึ่งง่ายต่อการเข้าใจจากชื่อของมัน วัตถุนี้ไม่ได้ทำอะไรเลย มันมีเพียงข้อมูลต่างๆ เกี่ยวกับคำขอ http ดังนั้น อย่างที่คุณอาจเดาได้อยู่แล้ว เทมเพลต Builder จึงถูกใช้เพื่อสร้างมันขึ้นมาด้วย
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
โดยที่ระหว่างการเรียกใช้เมธอดnewBuilder()และbuild()คุณต้องเรียกใช้เมธอดทั้งหมดเพื่อสร้างวัตถุHttpRequest.
ตัวอย่างของคำของ่ายๆ มีลักษณะดังนี้:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
คุณสามารถค้นหาเมธอดทั้งหมดของ คลาส HttpRequest ได้ที่ลิงก์ ในเอกสารทางการ
จากนั้นเราจะวิเคราะห์ความนิยมสูงสุดของพวกเขา
เมธอด uri()
เมื่อใช้ เมธอด uri()คุณสามารถตั้งค่า URI (หรือ URL) ที่จะส่งคำขอ http ตัวอย่าง:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
อย่างไรก็ตาม คุณสามารถทำให้โค้ดนี้สั้นลงได้เล็กน้อยโดยส่ง URI ไปยัง เมธอด newBuilder() โดยตรง :
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
สำคัญ! URI สามารถสร้างได้สองวิธี:
- ใหม่URI(สตริง)
- URI.create(สตริง)
วิธีที่สองเป็นที่นิยมกว่า วิธีแรก โชคไม่ดีนัก เนื่องจากตัวสร้าง URI ถูกประกาศเป็นURI สาธารณะ (String str) โยน URISyntaxExceptionและURISyntaxExceptionเป็นข้อยกเว้นที่ตรวจสอบแล้ว
เมธอด GET(), POST(), PUT(), DELETE()
คุณสามารถตั้งค่าวิธีการร้องขอ http โดยใช้วิธีการต่อไปนี้:
- รับ()
- โพสต์()
- ใส่()
- ลบ()
นี่คือลักษณะของคำขอ GET แบบง่าย:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
รุ่น () วิธีการ
คุณยังสามารถตั้งค่าเวอร์ชันโปรโตคอล HTTP มีเพียง 2 ตัวเลือก:
- HttpClient.Version.HTTP_1_1
- HttpClient.Version.HTTP_2
สมมติว่าคุณต้องการสร้างคำขอโดยใช้โปรโตคอล HTTP/2 คุณจะต้องเขียน:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
ง่ายมากใช่มั้ย :)
วิธีหมดเวลา ()
คุณยังสามารถตั้งเวลาการดำเนินการค้นหา หากผ่านและคำขอไม่เสร็จสมบูรณ์HttpTimeoutException จะถูกส่งออก ไป
เวลาถูกตั้งค่าโดยใช้วัตถุระยะเวลาจาก Java DateTime API ตัวอย่าง:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
การมีอยู่ของเมธอดนี้แสดงว่า คลาส HttpClientและHttpRequestสามารถทำงานได้หลากหลาย ลองนึกภาพว่าคุณกำลังดำเนินการตามคำขอ และมีบางอย่างเกิดขึ้นกับเครือข่ายและใช้เวลา 30 วินาที มีประโยชน์มากกว่าในการรับข้อยกเว้นทันทีและตอบสนองได้อย่างถูกต้อง
ส่วนหัว () วิธีการ
คุณยังสามารถเพิ่มส่วนหัวจำนวนเท่าใดก็ได้ในคำขอใดก็ได้ และทำได้ง่ายเหมือนอย่างอื่น มีวิธีการพิเศษสำหรับสิ่งนี้ - header () ตัวอย่าง:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
มีวิธีอื่นในการตั้งค่าส่วนหัวจำนวนมากพร้อมกัน อาจมีประโยชน์หากคุณแปลงรายการส่วนหัวเป็นอาร์เรย์:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
ทุกอย่างเบื้องต้นนั้นง่าย
GO TO FULL VERSION