קריאת גוף תגובת HTTP כמחרוזת ב- Java

REST למעלה

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס ג'אווה טופ

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

1. הקדמה

במדריך זה נחקור מספר ספריות לקריאת גוף תגובת HTTP כמחרוזת ב- Java. מאז הגרסאות הראשונות, ג'אווה סיפקה את חיבור HttpURLC ממשק API. זה כולל רק תכונות בסיסיות וידוע בכך שהוא לא מאוד ידידותי למשתמש.

עם שחרורו של JDK 11, ג'אווה הציגה את החדש והמשופר HttpClient API לטיפול בתקשורת HTTP. אנו נסקור את הספריות הללו, ונבדוק כמה חלופות כגון Apache HttpClient ותבנית Rest Spring.

2. HttpClient

כפי שהזכרנו קודם, HttpClient נוספה לג'אווה 11. זה מאפשר לנו לגשת למשאבים ברשת. אבל, בניגוד חיבור HttpURLC, HttpClient תומך ב- HTTP / 1.1 ו- HTTP / 2. יתר על כן, זה מספק גם סוגי בקשות סינכרוניים וגם אסינכרוניים.

HttpClient מציע ממשק API מודרני עם הרבה גמישות ותכונות חזקות. בעיקר, API זה מורכב משלוש שיעורי ליבה: HttpClient, HttpRequest, ו HttpResponse.

HttpResponse מתאר את התוצאה של HttpRequest שִׂיחָה. HttpResponse לא נוצר ישירות והוא זמין כאשר הגוף התקבל במלואו.

לקרוא גוף תגובה כ- חוּט, ראשית עלינו ליצור לקוח פשוט ולבקש אובייקטים:

לקוח HttpClient = HttpClient.newHttpClient (); HttpRequest בקשה = HttpRequest.newBuilder () .uri (URI.create (DUMMY_URL)) .build ();

ואז, אנחנו פשוט משתמשים BodyHandlers וקראו לשיטה ofString () להחזרת התגובה:

תגובה HttpResponse = client.send (בקשה, HttpResponse.BodyHandlers.ofString ());

3. חיבור HttpURLC

חיבור HttpURLC הוא לקוח HTTP קל המשמש לגישה למשאבים באמצעות פרוטוקול HTTP או HTTPS ומאפשר לנו ליצור InputStream. ברגע שנשיג את InputStream, אנחנו יכולים לקרוא את זה כמו קובץ מקומי רגיל.

ב- Java, המחלקות העיקריות שבהן אנו יכולים להשתמש כדי לגשת לאינטרנט הן ה- java.net.URL הכיתה וה java.net. HttpURL חיבור מעמד. ראשית, נשתמש ב- כתובת אתר בכיתה להצביע על משאב אינטרנט. לאחר מכן, אנו יכולים לגשת אליו באמצעות ה- חיבור HttpURLC מעמד.

כדי לקבל את גוף התגובה מא כתובת אתר כ חוּט, עלינו קודם ליצור חיבור HttpURLC באמצעות שלנו כתובת אתר:

חיבור HttpURLConnection = (HttpURLConnection) כתובת URL חדשה (DUMMY_URL) .openConnection ();

ה כתובת אתר חדשה (DUMMY_URL). openConnection () מחזירה א חיבור HttpURLC. אובייקט זה מאפשר לנו להוסיף כותרות או לבדוק את קוד התגובה.

הבא, בואו להשיג את InputStream מ ה חיבור לְהִתְנַגֵד:

InputStream inputStream = connection.getInputStream ();

לבסוף, אנחנו צריכים להמיר את InputStream אל א חוּט.

4. אפאצ'י HttpClient

בחלק זה נראה כיצד להשתמש באפצ'י HttpClient לקריאת גוף תגובת HTTP כמחרוזת.

כדי להשתמש בספריה זו, נצטרך להוסיף את התלות שלה בפרויקט Maven שלנו:

 org.apache.httpcomponents httpclient 4.5.12 

אנחנו יכולים לאחזר ולשלוח נתונים באמצעות סגור HttpClient מעמד. כדי ליצור מופע שלו עם תצורת ברירת מחדל נוכל להשתמש ב- HttpClients.createDefault ().

סגור HttpClient מספק לבצע שיטה למשלוח וקבלת נתונים. בשיטה זו משתמשים בפרמטר מסוג HttpUriRequest, שיש בו הרבה מחלקות משנה כולל HttpGet ו HttpPost.

בואו קודם ליצור HttpGet לְהִתְנַגֵד:

HttpGet בקשה = HttpGet חדש (DUMMY_URL);

שנית, בואו ליצור את הלקוח:

CloseableHttpClient client = HttpClients.createDefault ();

שלישית, אנחנו אחזר את אובייקט התגובה מהתוצאה של לבצע שיטה:

CloseableHttpResponse response = client.execute (בקשה);

לבסוף, אנו מחזירים את גוף התגובה על ידי המרת ישות התגובה לא חוּט:

ישות HttpEntity = response.getEntity (); תוצאת מחרוזת = EntityUtils.toString (ישות);

5. אביב RestTemplate

בחלק זה נראה כיצד להשתמש באביב RestTemplate לקריאת גוף תגובת HTTP כמחרוזת.

ה RestTemplate class הוא כלי חיוני שמספק Spring שמציע תבנית פשוטה לביצוע פעולות HTTP בצד הלקוח על ספריות לקוח HTTP הבסיסיות כגון JDK חיבור HttpURLC, אפאצ'י HttpClient, ואחרים.

RestTemplate מספק כמה שיטות שימושיות ליצירת בקשות HTTP וטיפול בתגובות.

אנו יכולים להשתמש בספריה זו על ידי הוספת תחילה כמה תלות לפרויקט Maven שלנו:

 org.springframework.boot spring-boot-starter-web $ {spring-boot.version} org.springframework.boot spring-boot-starter-test $ {spring-boot.version} test 

כדי להגיש בקשת רשת ולהחזיר את גוף התגובה כמחרוזת, בואו קודם ליצור מופע של RestTemplate:

RestTemplate restTemplate = RestTemplate חדש ();

שנית, אנחנו קבל את אובייקט התגובה על ידי קריאה לשיטה getForObject (), העברת כתובת ה- URL וסוג התגובה הרצוי נשתמש מחרוזת.מעמד בדוגמה שלנו:

תגובת מחרוזת = restTemplate.getForObject (DUMMY_URL, String.class);

6. מסקנה

במאמר זה ראינו כיצד להשתמש בכמה ספריות לקריאת גוף תגובת HTTP כ- חוּט.

כרגיל, הקוד השלם זמין ב- GitHub.

REST תחתון

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס תחתית Java

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

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