מדריך מהיר לפרסום בקשות באמצעות 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.


$config[zx-auto] not found$config[zx-overlay] not found