HttpClient 4 ספר בישול

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

ספר בישול זה מראה כיצד להשתמש ב- Apache HttpClient 4 במגוון דוגמאות ומקרי שימוש.

המיקוד הוא על HttpClient 4.3.x ומעלה, כך שחלק מהדוגמאות עשויות שלא לעבוד עם הגרסאות הישנות יותר של ה- API.

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

אם אתה רוצה להתעמק וללמוד דברים מגניבים אחרים אתה יכול לעשות עם ה- HttpClient - המשך אל המדריך הראשי של HttpClient.

2. ספר בישול

צור את לקוח http

CloseableHttpClient client = HttpClientBuilder.create (). Build ();

שלח בקשת GET בסיסית

מופע.execute (HttpGet חדש ("// www.google.com"));

קבל את קוד הסטטוס של תגובת HTTP

CloseableHttpResponse response = instance.execute (HttpGet חדש ("// www.google.com")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (200));

קבל את סוג המדיה של התגובה

CloseableHttpResponse response = instance.execute (HttpGet חדש ("// www.google.com")); מחרוזת contentMimeType = ContentType.getOrDefault (response.getEntity ()). GetMimeType (); assertThat (contentMimeType, equalTo (ContentType.TEXT_HTML.getMimeType ()));

להשיג את גוף התגובה

CloseableHttpResponse response = instance.execute (HttpGet חדש ("// www.google.com")); מחרוזת bodyAsString = EntityUtils.toString (response.getEntity ()); assertThat (bodyAsString, notNullValue ());

הגדר את פסק הזמן על פי בקשה

@Test (צפוי = SocketTimeoutException.class) חלל ציבורי שניתן LowLimeout_whenExecutingRequestWithTimeout_thenException () זורק ClientProtocolException, IOException {RequestConfig requestConfig = RequestConfig.custom () .setConnectionRequestTime. (Set. ConnectionRequestTime. HttpGet בקשה = HttpGet חדש (SAMPLE_URL); request.setConfig (requestConfig); מופע.execute (בקשה); }

הגדר פסק זמן עבור הלקוח כולו

RequestConfig requestConfig = RequestConfig.custom (). setConnectionRequestTimeout (1000). setConnectTimeout (1000) .setSocketTimeout (1000) .build (); HttpClientBuilder בונה = HttpClientBuilder.create (). SetDefaultRequestConfig (requestConfig);

שלח בקשת POST

מופע.execute (HttpPost חדש (SAMPLE_URL));

להוסיף פרמטרים לבקשה

רשימת פאראמים = ArrayList חדש (); params.add (BasicNameValuePair חדש ("key1", "value1")); params.add (BasicNameValuePair חדש ("key2", "value2")); request.setEntity (UrlEncodedFormEntity חדש (params, Consts.UTF_8));

להגדיר כיצד מטפלים בהפניה מחדש לבקשת HTTP

מופע CloseableHttpClient = HttpClientBuilder.create (). DisableRedirectHandling (). Build (); CloseableHttpResponse response = instance.execute (HttpGet חדש ("// t.co/I5YYd9tddw")); assertThat (response.getStatusLine (). getStatusCode (), equalTo (301));

הגדר את הכותרות לבקשה

HttpGet בקשה = HttpGet חדש (SAMPLE_URL); request.addHeader (HttpHeaders.ACCEPT, "application / xml"); תגובה = מופע. ביצוע (בקשה);

להשיג את הכותרות מהתגובה

CloseableHttpResponse response = instance.execute (HttpGet חדש (SAMPLE_URL)); כותרת [] כותרות = response.getHeaders (HttpHeaders.CONTENT_TYPE); assertThat (כותרות, לא (emptyArray ()));

סגור / שחרר משאבים

תגובה = מופע.execute (HttpGet חדש (SAMPLE_URL)); נסה את {HttpEntity entity = response.getEntity (); אם (ישות! = null) {InputStream instream = entity.getContent (); instream.close (); }} סוף סוף {respons.close (); }

3. היכנס עמוק לתוך HttpClient

ספריית HttpClient היא כלי עוצמתי למדי אם משתמשים בה נכון - אם אתה רוצה להתחיל לחקור מה הלקוח יכול לעשות - בדוק כמה מהמדריכים:

  • HttpClient 4 - קבל את קוד הסטטוס
  • HttpClient - הגדר כותרת מותאמת אישית

אתה יכול גם לחפור עמוק יותר לתוך HttpClient על ידי חקר הסדרה כולה.

4. מסקנה

הפורמט הזה שונה מעט מהאופן שבו אני בדרך כלל מבנה את המאמרים שלי - אני מפרסם כמה מספרי הבישול הפנימיים שלי בנושא נתון - בגוגל גויאבה, המקרסט ומוקיטו - ועכשיו HttpClient. המטרה היא שמידע זה יהיה זמין באופן מקוון - ולהוסיף אליו בכל פעם שנתקלתי בדוגמא שימושית חדשה.

יישום כל הדוגמאות וקטעי הקוד ניתן למצוא באתר GitHub.

זהו פרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.


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