מדריך מהיר לפרסום בקשות באמצעות OkHttp
1. הקדמה
אנו מכסים את היסודות של לקוח OkHttp במדריך שלנו ל- OkHttp.
במדריך קצר זה, נבחן סוגים שונים של בקשות POST עבור גרסה 3.x של הלקוח.
2. POST בסיסי
אנחנו יכולים להשתמש FormBody.Builder לבנות בסיס RequestBody לשלוח שני פרמטרים - שם משתמש ו סיסמה - עם בקשת POST:
@ מבחן ציבורי בטל כאשר SendPostRequest_thenCorrect () זורק IOException {RequestBody formBody = FormBody.Builder חדש () .add ("שם משתמש", "מבחן"). להוסיף ("סיסמה", "מבחן"). בניין (); בקשת בקשה = Request.Builder חדש () .url (BASE_URL + "/ משתמשים") .post (formBody) .build (); שיחת שיחה = client.newCall (בקשה); תגובת תגובה = call.execute (); assertThat (response.code (), equalTo (200)); }
3. הודעה עם הרשאה
אם אנו רוצים לאמת את הבקשה, נוכל להשתמש ב- אישורים. בסיסי בונה כדי להוסיף אישורים לכותרת.
בדוגמה פשוטה זו, נשלח גם חוּט כגוף הבקשה:
@Test הציבור בטל כאשרSendPostRequestWithAuthorization_thenCorrect () זורק IOException {String postBody = "הודעת בדיקה"; בקשת בקשה = Request.Builder חדש) URL. markdown), postBody)) .build (); call call = client.newCall (בקשה); תגובה תגובה = call.execute (); assertThat (response.code (), שווה ל- (200));}
4. פרסם עם JSON
על מנת לשלוח את JSON לגוף הבקשה, עלינו להגדיר את סוג המדיה שלו יישום / json. אנו יכולים לעשות זאת באמצעות ה- RequestBody.create בּוֹנֶה:
@ מבחן ציבורי בטל כאשר PostJson_thenCorrect () זורק IOException {String json = "{\" id \ ": 1, \" name \ ": \" John \ "}"; גוף RequestBody = RequestBody.create (MediaType.parse ("application / json"), json); בקשת בקשה = Request.Builder חדש () .url (BASE_URL + "/ משתמשים / פרט") .post (body) .build (); שיחת שיחה = client.newCall (בקשה); תגובת תגובה = call.execute (); assertThat (response.code (), equalTo (200)); }
5. בקשת POST מרובת חלקים
הדוגמה האחרונה שנבחן היא בקשה מרובת חלקים של POST. אנחנו צריכים לבנות את שלנו RequestBody כ MultipartBody לפרסום קובץ, שם משתמש וסיסמה:
@Test ציבורי בטל כאשר SendMultipartRequest_thenCorrect () זורק IOException {RequestBody requestBody = MultipartBody.Builder חדש () .setType (MultipartBody.FORM) .addFormDataPart ("שם משתמש", "מבחן") .addFormDataPart ("סיסמה", "testata. Testdata)." ("file", "file.txt", RequestBody.create (MediaType.parse ("application / octet-stream"), קובץ חדש ("src / test / resources / test.txt"))) .build (); בקשת בקשה = Request.Builder חדש () .url (BASE_URL + "/ משתמשים / מרובה חלקים") .post (requestBody) .build (); שיחת שיחה = client.newCall (בקשה); תגובת תגובה = call.execute (); assertThat (response.code (), equalTo (200)); }
6. POST עם קידוד תווים שאינו ברירת מחדל
קידוד התווים המוגדר כברירת מחדל של OkHttp הוא UTF-8:
@ מבחן ציבורי בטל כאשר PostJsonWithoutCharset_thenCharsetIsUtf8 () זורק IOException {final String json = "{\" id \ ": 1, \" name \ ": \" John \ "}"; גוף RequestBody סופי = RequestBody.create (MediaType.parse ("application / json"), json); מחרוזת Charset = body.contentType (). Charset (). DisplayName (); assertThat (charset, equalTo ("UTF-8")); }
אם אנו רוצים להשתמש בקידוד תווים אחר, נוכל להעביר אותו כפרמטר השני של ה- MediaType.parse ():
@ מבחן פומבי בטל כאשר PostJsonWithUtf16Charset_thenCharsetIsUtf16 () זורק IOException {final String json = "{\" id \ ": 1, \" name \ ": \" John \ "}"; גוף RequestBody סופי = RequestBody.create (MediaType.parse ("application / json; charset = utf-16"), json); מחרוזת Charset = body.contentType (). Charset (). DisplayName (); assertThat (charset, equalTo ("UTF-16")); }
7. מסקנה
במאמר קצר זה, ראינו כמה דוגמאות לבקשות POST עם ה- OkHttp לָקוּחַ.
כרגיל, דוגמאות הקוד זמינות ב- GitHub.