بشكل عام، لا مفر من مواجهة استدعاءات للواجهات الخارجية أثناء تطوير المشروع. توضح هذه المقالة طريقة استدعاء فئة HttpURLConnection في خلفية Java لمحاكاة طلبات المتصفح. يمكن استخدامها لمكالمات الواجهة. شاركها مع الجميع لتكون مرجعا لك. طريقة التنفيذ المحددة هي كما يلي:
انسخ الكود كما يلي: package com.cplatform.movie.back.test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
استيراد java.io.InputStreamReader؛
import java.net.HttpURLConnection;
استيراد java.net.URL؛
import 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 = new URL(GET_URL); // تحويل السلسلة إلى عنوان طلب URL
اتصال HttpURLConnection = (HttpURLConnection) url.openConnection();// افتح الاتصال
Connection.connect();// اتصال الجلسة
// احصل على دفق الإدخال
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
خط السلسلة؛
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// تكرار تدفق القراءة
sb.append(line);
}
br.Close();// أغلق الدفق
اتصال. قطع الاتصال ()؛
System.out.println(sb.toString());
} قبض (الاستثناء ه) {
printStackTrace();
System.out.println("فشل!");
}
}
/**
* واجهة المكالمات POST
*/
httpURLConnectionPOST () باطل عام ثابت {
يحاول {
عنوان URL = عنوان URL الجديد (POST_URL)؛
// فرض اتصال urlConnection الذي تم إرجاعه بواسطة الطريقة المفتوحة إلى اتصال HttpURLConnection (حدد اتصال الكائن البعيد المشار إليه بواسطة عنوان url)
اتصال HttpURLConnection = (HttpURLConnection) url.openConnection();// في هذا الوقت cnnection هو مجرد كائن اتصال، في انتظار الاتصال
// قم بتعيين دفق إخراج الاتصال على "صحيح"، والإعداد الافتراضي هو "خطأ" (تمرر طلبات النشر ضمنيًا المعلمات في شكل دفق)
Connection.setDoOutput(true);
// اضبط دفق إدخال الاتصال على صحيح
Connection.setDoInput(true);
// قم بتعيين طريقة الطلب للنشر
Connection.setRequestMethod("POST");
// تم تعيين ذاكرة التخزين المؤقت لطلب النشر على خطأ
Connection.setUseCaches(false);
// قم بتعيين ما إذا كان مثيل HttpURLConnection يقوم تلقائيًا بإعادة التوجيه
Connection.setInstanceFollowRedirects(true);
// قم بتعيين كل سمة في رأس الطلب (ما يلي هو نوع المحتوى الذي تم تعيينه على المعلمة المشفرة بواسطة urlEncoded)
// application/x-javascript text/xml->تطبيق بيانات xml/x-javascript->تطبيق كائن json/x-www-form-urlencoded->بيانات النموذج
Connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// إنشاء اتصال (لا يبدأ الطلب حتى يتم استدعاء طريقة Connection.getInputStream(). يجب إجراء إعدادات المعلمة أعلاه قبل هذه الطريقة)
Connection.connect();
// إنشاء دفق إدخال وإخراج يستخدم لإخراج المعلمات المحمولة في الاتصال (محتوى الإخراج هو المحتوى التالي؟)
DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //URLEncoder.encode() يقوم بتشفير السلاسل
// معلمات الإخراج للاتصال
dataout.writeBytes(parm);
// قم بتحديث الدفق وإغلاقه بعد اكتمال الإخراج
dataout.flush();
dataout.Close(); // خطوة مهمة وسهلة التجاهل (أغلق الدفق، تذكر!)
System.out.println(connection.getResponseCode());
// يبدأ الاتصال طلبًا ويعالج استجابة الخادم (يحصل على دفق الإدخال من الاتصال ويغلفه كقارئ مؤقت)
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
خط السلسلة؛
StringBuilder sb = new StringBuilder(); // يُستخدم لتخزين بيانات الاستجابة
// اقرأ الدفق في حلقة إذا لم يصل إلى النهاية
بينما ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf. Close(); // خطوة مهمة وسهلة التجاهل (أغلق الدفق، تذكر!)
Connection.disconnect(); // تدمير الاتصال
System.out.println(sb.toString());
} قبض (الاستثناء ه) {
printStackTrace();
}
}
public static void main(String[] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
}
}
آمل أن تكون هذه المقالة مفيدة لبرمجة جافا للجميع.