โค้ดยิม/หลักสูตรจาวา/โมดูล 3/การร้องขอด้วย HttpRequest

การร้องขอด้วย HttpRequest

ระดับ, บทเรียน
มีอยู่

เมธอด 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();

ทุกอย่างเบื้องต้นนั้นง่าย

ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ