ביצוע בקשת JSON POST באמצעות HttpURLConnection

1. סקירה כללית

במדריך זה נדגים כיצד לבצע בקשת JSON POST באמצעות חיבור HttpURLC.

2. בניית בקשת JSON POST עם חיבור HttpURLC

2.1. ליצור כתובת אתר לְהִתְנַגֵד

בואו ניצור כתובת אתר אובייקט עם מחרוזת היעד URI המקבלת את נתוני JSON באמצעות שיטת HTTP POST:

URL url = URL חדש ("//reqres.in/api/users");

2.2. פתח חיבור

מלמעלה כתובת אתר אנחנו יכולים להפעיל את openConnection שיטה להשיג את חיבור HttpURLC לְהִתְנַגֵד.

אנחנו לא יכולים ליצור אינסטנט חיבור HttpURLC באופן ישיר, מכיוון שמדובר בכיתה מופשטת:

HttpURLConnection con = (HttpURLConnection) url.openConnection ();

2.3. הגדר את שיטת הבקשה

כדי לשלוח בקשת POST, נצטרך להגדיר את מאפיין שיטת הבקשה ל- POST:

con.setRequestMethod ("POST");

2.4. הגדר את פרמטר הכותרת הבקשה מסוג תוכן

מַעֲרֶכֶת "סוג תוכן" כותרת הבקשה אל "יישום / json" לשלוח את תוכן הבקשה בטופס JSON. יש להגדיר פרמטר זה כדי לשלוח את גוף הבקשה בפורמט JSON.

לא מצליח לעשות זאת, השרת מחזיר את קוד סטטוס ה- HTTP "בקשה של 400 רע".

con.setRequestProperty ("סוג תוכן", "application / json; utf-8"); 

כמו כן, שים לב שהזכרנו קידוד ערכות לצד סוג התוכן. זה שימושי אם קידוד תוכן הבקשה שונה מקידוד UTF-8, שהוא קידוד ברירת המחדל.

2.5. הגדר סוג פורמט תגובה

הגדר את "לְקַבֵּל" כותרת הבקשה אל "יישום / json" לקריאת התגובה בפורמט הרצוי:

con.setRequestProperty ("קבל", "יישום / json");

2.6. ודא שהחיבור ישמש לשליחת תוכן

כדי לשלוח תוכן בקשה, בואו נפעיל את חיבור URLC של אובייקט doOutput נכס ל נָכוֹן.

אחרת, לא נוכל לכתוב תוכן לזרם פלט החיבור:

con.setDoOutput (נכון);

2.7. צור את גוף הבקשה

לאחר יצירת מחרוזת JSON מותאמת אישית:

String jsonInputString = "{" name ":" Upendra "," job ":" מתכנת "}";

נצטרך לכתוב את זה:

נסה (OutputStream os = con.getOutputStream ()) {byte [] input = jsonInputString.getBytes ("utf-8"); os.write (קלט, 0, input.length); }

2.8. קרא את התגובה מזרם הקלט

קבל את זרם הקלט לקרוא את תוכן התגובה. זכור להשתמש בנסיון-משאבים כדי לסגור את זרם התגובה באופן אוטומטי.

קרא את כל תוכן התגובה והדפס את מחרוזת התגובה הסופית:

נסה (BufferedReader br = BufferedReader חדש (InputStreamReader חדש (con.getInputStream (), "utf-8"))) {תגובת StringBuilder = StringBuilder חדש (); מחרוזת responseLine = null; ואילו ((responseLine = br.readLine ())! = null) {respons.append (responseLine.trim ()); } System.out.println (response.toString ()); }

אם התגובה היא בפורמט JSON, השתמש בכל מנתחי JSON של צד שלישי כגון ג'קסון סִפְרִיָה, גסון, או org.json לנתח את התגובה.

3. מסקנה

במאמר זה ראינו כיצד לבצע בקשת POST עם גוף תוכן JSON באמצעות חיבור HttpURLC.

כמו תמיד, ניתן למצוא קטעי קוד רלוונטיים ב- GitHub