כיצד לבצע בקשות HTTP POST באנדרואיד?

1. הוסף הרשאות אינטרנט למניפסט אנדרואיד.
2. צור חסימת ניסיון.
3. בנה אובייקטים של HttpURLConnection ו- URL.
4. הגדר את הפלט לפרסום לשרת.

URL url = URL חדש ("http://exampleurl.com/")
URL url = URL חדש ("http://exampleurl.com/"); לקוח HttpURLConnection = null; נסה את {client = (HttpURLConnection) url.openConnection (); }.

HTTP Post הוא חלק משיעורי HTTP שהוצאו משימוש כמו org.apache.http ו- AndroidHttpClient החל מ- Android 5,1. העבר את הקוד שלך לשיעורי HttpURLConnection הכוללים פונקציונליות פרסום. HTTP Post משמש ב- Java כדי לבקש ששרת אינטרנט ספציפי יקבל וישמור נתונים שיוגשו בטופס בקשה. הנתונים מוגשים ומאוחסנים בזוגות שם-ערך. דוגמאות לזוגות כוללות: דוא"ל - כתובת הדוא"ל שלך; שם משתמש - שם המשתמש שלך; וסיסמה - הסיסמה שלך.

חלק 1 מתוך 2: יצירת חסימת נסיון ואובייקט httpurlconnection

  1. 1
    הוסף הרשאות אינטרנט למניפסט אנדרואיד. אנדרואיד המניפסט הוא קובץ XML המספק מידע חשוב על מערכת אנדרואיד כי קובעת תאימות המכשיר וגישה תכונות. בקובץ "AndroidManifest.xml", הזן את השורה הבאה כדי לספק גישה לאינטרנט.
    <משתמש-הרשאה אנדרואיד: name = "android.permission.INTERNET" /> 
  2. 2
    צור חסימת ניסיון. ב- Java, הצהרת ניסיון היא מטפל חריג שימנע מהתוכנית לקרוס אם היא לא מסוגלת לבצע פעולה. מכיוון שהדבר ידרוש חיבור למיקום רשת, הצהרת נסיון תתפוס חריג אם היא לא מצליחה ליצור חיבור. אתה יכול להוסיף את זה לשיטת Java חדשה.
    נסה {// הזן הצהרות שיכולות לגרום לחריגים} 
    HTTP Post הוא חלק משיעורי HTTP שהוצאו משימוש כמו org.apache.http ו- AndroidHttpClient החל מ- Android 5,1
    HTTP Post הוא חלק משיעורי HTTP שהוצאו משימוש כמו org.apache.http ו- AndroidHttpClient החל מ- Android 5,1.
  3. 3
    בנה אובייקטים של httpurlconnection ו- URL. ג'אווה היא שפה מונחית עצמים. אובייקט מורכב ממצבים והתנהגויות שהוא מופע של מחלקה. האובייקט HttpURLConnection שולח ומקבל נתונים דרך האינטרנט. בקוד שלך, התחל את השיטה החדשה שלך על ידי יצירת אובייקט URL והקצה לו כתובת URL לאובייקט HttpURLConnection להתחבר אליו.
    • URL url = URL חדש ("http://exampleurl.com/"); לקוח HttpURLConnection = (HttpURLConnection) url.openConnection (); 
    • לקבלת שיטות עבודה מומלצות, קבע את כתובות ה- URL ו- HttpURLConnection מחוץ לחסימת הניסיון כדי להקל על לתפוס חריגים.
    • URL url = URL חדש ("http://exampleurl.com/"); לקוח HttpURLConnection = null; נסה את {client = (HttpURLConnection) url.openConnection (); } 

חלק 2 מתוך 2: פרסום בקשת הפלט וטיפול בחריגים

  1. 1
    הגדר את שיטת הבקשה לפרסום. על מנת לשלוח מידע לשרת, עליך להגדיר את סוג האובייקט HttpURLConnection לפרסום ולהגדיר את הפלט ל- true באמצעות setDoOutput (). השתמש בפונקציה setRequestProperty () כדי להגדיר מאפיין בקשה כללית הדורש שני אלמנטים, מפתח עם בקשה ידועה מהשרת וערך הכלול במפתח המתאים.
    • הפונקציה setRequestProperty () משמשת ככותרת הבקשה Accept-Encoding בכדי להשבית לחץ לחץ אוטומטי.
      client.setRequestMethod ("POST"); client.setRequestProperty ("מפתח", "ערך"); client.setDoOutput (נכון); 
  2. 2
    פלט את הזרם לשרת. עליך לבקש את זרם הפלט מהשרת על מנת שתוכל לכתוב לזרם הפלט, או לפרסם, ואז לשטוף ולסגור את הזרם בסיום.
    • OutputStream outputPost = חדש BufferedOutputStream (client.getOutputStream ()); writeStream (outputPost); outputPost.flush (); outputPost.close (); 
    • מטעמי ביצועים, זה רעיון טוב לתת יודע השרת איך גדול בתי התוכן יהיה. השיטה הטובה ביותר היא setFixedLengthStreamingMode (int) כאשר אורך הגוף ידוע, ואילו setChunkedStreamingMode (int) משמש אם אורכו אינו ידוע. אי שימוש באחת מהשיטות הקודמות גורם לאובייקט HttpURLConnection לאגר את הגוף השלם בזיכרון לפני העברתו.
    • client.setFixedLengthStreamingMode (outputPost.getBytes (). אורך); client.setChunkedStreamingMode (0); 
    URL url = URL חדש ("http://exampleurl.com/")
    URL url = URL חדש ("http://exampleurl.com/"); לקוח HttpURLConnection = (HttpURLConnection) url.openConnection ();.
  3. 3
    לתפוס חריגים כלשהם. לאחר הצהרת הניסיון, השתמש בגוש התפס כדי לבדוק חריגה לגבי קלט ופלט באמצעות IOException, קלט שגיאת URL למעט MalformedURL ובדוק אם כתובת ה- URL אינה מספקת מענה בזמן עם SocketTimeoutException.
    לתפוס (שגיאת MalformedURLException) {// מטפל בכתובת אתר שהוזנה באופן שגוי} לתפוס (שגיאת SocketTimeoutException) {// מטפל בפסק זמן לגישה לכתובת אתר. } לתפוס (שגיאת IOException) {// מטפל בשגיאות קלט ופלט} 
  4. 4
    התנתק מכתובת האתר. לאחר שתסיים את חיבור ה- URL שלך, יהיה עליך להתנתק מכתובת האתר. הקפד לבדוק שאתה מחובר לכתובת אתר לפני שתנסה להתנתק.
    לבסוף {if (client! = null) // ודא שהחיבור אינו ריק. client.disconnect (); } 

דברים שתזדקק להם

  • Java IDE
  • כלים לפיתוח אנדרואיד (SDK, אמולטור וכו ')
  • טלפון של מפתח אנדרואיד או מכשיר אחר המופעל באמצעות אנדרואיד (אופציונלי לבדיקה)
  • חיבור לאינטרנט (לבדיקה)

שאלות ותשובות

  • כיצד אוכל לפתור את השיטה 'writeStream (java.io.OutputStream)'?
    נראה כי שיטה זו היא רק דוגמה למה שעליכם לעשות בנקודה זו. לאחר מכן עליך לבצע יישום משלך כדי לכתוב נתונים ל- OutputStream. תוכל למצוא דוגמאות פשוטות באינטרנט המסבירות כיצד לכתוב סוגים שונים של נתונים ל- OutputStream.
  • אני מקבל שגיאות שלא ניתן לפתור את הסמל עבור כתובות ה- URL ו- HttpURLConnection. אילו חבילות אני אמור לייבא?
    ניתן להגדיר אנדרואיד סטודיו לייבא אוטומטית חבילות לאחר שהסמלים מתייחסים או מודבקים בקוד. ניתן גם להוסיף באופן ידני את החבילות על ידי הקלדה ובלי סמלי החץ שהסתיימו בספר. כדי להגדיר ל- Android Studio ייבוא אוטומטי של חבילות, על משתמשי Windows ו- Linux ללחוץ על קובץ> הגדרות> Edti> כללי> ייבוא אוטומטי> משתמשי Java ו- Mac חייבים ללחוץ על Android Studio> העדפות. שנה את "הכנס יבוא על הדבקה" לכולם וסמן "הוסף יבוא חד משמעי על הדרך" ואז שמור את השינויים שלך.
  • מדוע עלינו לכלול את קו android.permission.INTERNET במניפסט אנדרואיד?
    קובץ Android Manifest מציג למערכת Android מידע חיוני על האפליקציה ונדרש לכל אפליקציה בספריית השורשים שלה. הרשאת INTERNET מעניקה גישה ל- API הפותח את שקעי הרשת של המכשיר.
שאלות ללא מענה
  • מה זה - - "writeStream (outputPost);"?

FacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail