โดยทั่วไป ย่อมหลีกเลี่ยงไม่ได้ที่จะพบการเรียกไปยังอินเทอร์เฟซภายนอกในระหว่างการพัฒนาโครงการ บทความนี้จะอธิบายวิธีการเรียกคลาส HttpURLConnection ในพื้นหลังของ Java เพื่อจำลองคำขอของเบราว์เซอร์ สามารถใช้สำหรับการเรียกอินเทอร์เฟซ แบ่งปันกับทุกคนสำหรับการอ้างอิงของคุณ วิธีการดำเนินการเฉพาะมีดังนี้:
คัดลอกรหัสดังนี้: แพ็คเกจ com.cplatform.movie.back.test;
นำเข้า java.io.BufferedReader;
นำเข้า java.io.DataOutputStream;
นำเข้า java.io.InputStreamReader;
นำเข้า java.net.HttpURLConnection;
นำเข้า java.net.URL;
นำเข้า java.net.URLEncoder;
HttpURLConnectionTest คลาสสาธารณะ {
สตริงสุดท้ายคงที่สาธารณะ GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
สตริงสุดท้ายแบบคงที่สาธารณะ POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
-
* อินเทอร์เฟซเรียก GET
-
โมฆะคงที่สาธารณะ httpURLConectionGET() {
พยายาม {
URL url = URL ใหม่ (GET_URL); // แปลงสตริงเป็นที่อยู่คำขอ URL
การเชื่อมต่อ HttpURLConnection = (HttpURLConnection) url.openConnection();//เปิดการเชื่อมต่อ
Connection.connect();//เชื่อมต่อเซสชัน
// รับอินพุตสตรีม
BufferedReader br = BufferedReader ใหม่ (InputStreamReader ใหม่ (connection.getInputStream()));
เส้นสาย;
StringBuilder sb = StringBuilder ใหม่ ();
ในขณะที่ ((line = br.readLine()) != null) {// สตรีมการอ่านแบบวนซ้ำ
sb.ผนวก(บรรทัด);
-
br.close();//ปิดสตรีม
Connection.disconnect(); // ตัดการเชื่อมต่อ
System.out.println(sb.toString());
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
System.out.println("ล้มเหลว!");
-
-
-
* อินเทอร์เฟซเรียก POST
-
โมฆะคงที่สาธารณะ httpURLConnectionPOST () {
พยายาม {
URL URL = URL ใหม่ (POST_URL);
// บังคับให้การเชื่อมต่อ urlConnection ส่งกลับโดยวิธีการเปิดไปยังการเชื่อมต่อ HttpURLConnection (ระบุการเชื่อมต่อวัตถุระยะไกลที่อ้างอิงโดย url)
การเชื่อมต่อ HttpURLConnection = (HttpURLConnection) url.openConnection();// ในขณะนี้ cnnection เป็นเพียงวัตถุการเชื่อมต่อที่รอการเชื่อมต่อ
//ตั้งค่าสตรีมเอาต์พุตการเชื่อมต่อเป็นจริง ค่าเริ่มต้นคือเท็จ (คำขอโพสต์ส่งพารามิเตอร์โดยปริยายในรูปแบบของสตรีม)
การเชื่อมต่อ setDoOutput (จริง);
//ตั้งค่าสตรีมอินพุตการเชื่อมต่อเป็นจริง
การเชื่อมต่อ setDoInput (จริง);
//ตั้งค่าวิธีการร้องขอเพื่อโพสต์
Connection.setRequestMethod("โพสต์");
// แคชคำขอโพสต์ถูกตั้งค่าเป็นเท็จ
การเชื่อมต่อ setUseCaches (เท็จ);
//ตั้งค่าว่าอินสแตนซ์ HttpURLConnection จะทำการเปลี่ยนเส้นทางโดยอัตโนมัติหรือไม่
การเชื่อมต่อ setInstanceFollowRedirects (จริง);
//ตั้งค่าแต่ละแอตทริบิวต์ในส่วนหัวของคำขอ (ต่อไปนี้เป็นประเภทของเนื้อหา ตั้งค่าเป็นพารามิเตอร์จากที่เข้ารหัสโดย urlEncoded)
// แอปพลิเคชัน / ข้อความ x-javascript / xml-> แอปพลิเคชันข้อมูล xml / x-javascript-> แอปพลิเคชันวัตถุ json / x-www-form-urlencoded-> ข้อมูลแบบฟอร์ม
Connection.setRequestProperty("ประเภทเนื้อหา", "application/x-www-form-urlencoded");
// สร้างการเชื่อมต่อ (คำขอจะไม่เริ่มต้นจนกว่าจะมีการเรียกเมธอด Connection.getInputStream() การตั้งค่าพารามิเตอร์ข้างต้นจะต้องดำเนินการก่อนเมธอดนี้)
การเชื่อมต่อเชื่อมต่อ();
//สร้างสตรีมอินพุตและเอาท์พุตซึ่งใช้ในการส่งออกพารามิเตอร์ที่ดำเนินการในการเชื่อมต่อ (เนื้อหาเอาต์พุตคือเนื้อหาที่อยู่หลัง?)
DataOutputStream dataout = DataOutputStream ใหม่ (connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //URLEncoder.encode() วิธีการเข้ารหัสสตริง
// พารามิเตอร์เอาท์พุตสำหรับการเชื่อมต่อ
dataout.writeBytes(พาร์ม);
// รีเฟรชและปิดสตรีมหลังจากเอาต์พุตเสร็จสิ้น
dataout.flush();
dataout.close(); // ขั้นตอนสำคัญและง่ายต่อการเพิกเฉย (ปิดสตรีม จำไว้!)
System.out.println(connection.getResponseCode());
// การเชื่อมต่อเริ่มต้นคำขอและประมวลผลการตอบสนองของเซิร์ฟเวอร์ (รับสตรีมอินพุตจากการเชื่อมต่อและตัดเป็น bufferedReader)
BufferedReader bf = BufferedReader ใหม่ (InputStreamReader ใหม่ (connection.getInputStream()));
เส้นสาย;
StringBuilder sb = new StringBuilder(); // ใช้เพื่อเก็บข้อมูลการตอบกลับ
// อ่านสตรีมแบบวนซ้ำหากยังไม่ถึงจุดสิ้นสุด
ในขณะที่ ((line = bf.readLine()) != null) {
sb.ผนวก(bf.readLine());
-
bf.close(); // ขั้นตอนสำคัญและง่ายต่อการเพิกเฉย (ปิดสตรีม จำไว้!)
Connection.disconnect(); // ทำลายการเชื่อมต่อ
System.out.println(sb.toString());
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
-
โมฆะคงที่สาธารณะ main (String [] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน