ภาพรวมการสื่อสาร http
การสื่อสาร HTTP มีสองวิธีในการโพสต์และรับ อดีตส่งข้อมูลไปยังเซิร์ฟเวอร์ผ่านเอนทิตีข้อความ HTTP ซึ่งมีความปลอดภัยสูงและไม่มีการ จำกัด ขนาดการส่งข้อมูล ข้อความ อย่างไรก็ตามคำขอ GET ไม่ได้เตรียมไว้ -คำขอ GET ส่วนใหญ่จะใช้ในการสืบค้น (การอ่านทรัพยากร) ซึ่งมีประสิทธิภาพ คำขอโพสต์ใช้สำหรับการดำเนินการด้านความปลอดภัยสูงเช่นการลงทะเบียนและเข้าสู่ระบบและเขียนข้อมูลไปยังฐานข้อมูล
นอกจากโพสต์และรับแล้วยังมีวิธีอื่นในการสื่อสารกับ HTTP! โปรดดูวิธีการคำขอ HTTP
การเตรียมการก่อนเขียนโค้ด
ก่อนที่การเข้ารหัสจะดำเนินการก่อนอื่นเราจะสร้าง servlet ซึ่งได้รับพารามิเตอร์ไคลเอนต์ (ชื่อและอายุ) และตอบกลับลูกค้า
@webservlet (urlpatterns = {"/demo.do"}) demoservlet ระดับสาธารณะขยาย httpservlet {prive static long long serverversionuid = 1l; "); Response.setContentType (" ข้อความ/html; charset = utf-8 "); ชื่อสตริง = requestparameter (" ชื่อ "); ge"); บริการโดยรับ โยน servicetexception, ioexception f-8 "); response.setContentType (" text/html; charset = utf-8 "); ชื่อสตริง = คำขอ. getParameter (" ชื่อ "); string age = request.getParameter (" อายุ ") ; ;}}
ใช้ JDK เพื่อใช้การสื่อสาร HTTP
ใช้การเชื่อมต่อ urlConnnection เพื่อดำเนินการตามคำขอ
ตรวจสอบวัตถุ java.net.url;
รับ java.net.urlconnection ผ่านวิธีการ OpenConnection () ของวัตถุ URL;
รับกระแสอินพุตผ่านวิธี getInputStream () ของวัตถุ URLConnection;
อ่านสตรีมอินพุต
ทรัพยากรปิด
โมฆะสาธารณะ get () โยนข้อยกเว้น {url url = url ใหม่ ("http://127.0.0.1/http/demo.name=jack&age=10"); ใหม่ bufferedReader (ใหม่ InputStreamReader (urlConnection.getInputStream (), "UTF-8")); ) {sb.append (บรรทัด + "/n");} system.out.println (sb.toString ());}
ใช้ httpurlconnection เพื่อใช้งานการร้องขอโพสต์
java.net.httpurlconnection เป็นคลาสย่อยของ java.net.url ให้การดำเนินการเพิ่มเติมเกี่ยวกับ HTTP (วิธี getXxx และ setxxx) คลาสนี้กำหนดชุดของรหัสสถานะ HTTP:
โมฆะสาธารณะโพสต์ () โยน ioexception {url url = url ใหม่ ("http: //127.0.0.0.0.1/http/demo.do"); SetDoOutput (จริง); (httpurlconnection.getOutputStream ()); Flush (); ) {// อ่านข้อมูล sb.append (บรรทัด + "/n");} system.out.println (sb.toString ());}
ใช้ httpClient สำหรับการสื่อสาร http
HTTPClient ทำให้การใช้งานการสื่อสาร HTTP ง่ายขึ้นอย่างมากใน JDK
การพึ่งพา Maven:
<Ederency> <roupId> org.apache.httpComponents </groupId> <ratifactId> httpClient </artifactId> <version> 4.3.6 </version>
รับคำขอ
โมฆะสาธารณะ httpClientget () โยนข้อยกเว้น {// สร้าง httpClient object httpClient client = httpClients.createdefault (); 40 "); // เรียกใช้วิธีการดำเนินการของวัตถุ httpClient เพื่อรับการตอบกลับ httpresponse response = client.execute (รับ); // การโทร httpresponse วิธีการ getentity ของวัตถุ SE ได้รับเอนทิตีตอบสนอง httpentity httpentity = response.getEntity );
โพสต์คำขอ
โมฆะสาธารณะ httppClientPost () โยนข้อยกเว้น {// สร้าง httpClient object httpClient client = httpClients.createdefault (); ; // สร้างรายการคอนเทนเนอร์สำหรับการจัดเก็บคู่คีย์บิส SAN ")); parameters.add (ใหม่ BasicNameValuePair (" อายุ "," 25 ")); // เพิ่มโพสต์เอนทิตีข้อความ setEntity (urlencodedFormentity ใหม่ (พารามิเตอร์," UTF- 8 "))); // รับการตอบกลับ และแปลงเป็นสตริง httpresponse response = client.execute (โพสต์); ;}
HttpClient เป็นโครงการย่อยภายใต้ Apache Jakarta Common เพื่อให้ชุดเครื่องมือการเขียนโปรแกรมไคลเอ็นต์ที่มีประสิทธิภาพล่าสุดและมีคุณสมบัติล่าสุดที่รองรับโปรโตคอล HTTP และรองรับเวอร์ชันล่าสุดและคำแนะนำของโปรโตคอล HTTP HttpClient ถูกนำไปใช้กับหลายโครงการเช่นโครงการโอเพ่นซอร์สอื่น ๆ ที่รู้จักกันดีอีกสองโครงการใน Apache Jakarta Cactus และ HTMLUNIT ทั้งคู่ใช้ HTTPClient