סוכן משתמש מותאם אישית ב- HttpClient 4

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

הדרכה מהירה זו תוצג כיצד לשלוח מותאם אישית סוכן משתמש כותרת באמצעות Apache HttpClient 4.

2. הגדרה סוכן משתמש על HttpClient

2.1. לפני HttpClient 4.3

בעת עבודה עם גרסאות ישנות יותר של Http Client (טרום 4.3), הגדרת הערך של ה- סוכן משתמש נעשה באמצעות API ברמה נמוכה:

client.getParams (). setParameter (CoreProtocolPNames.USER_AGENT, "Mozilla / 5.0 Firefox / 26.0");

ניתן לעשות זאת באמצעות גם API ברמה גבוהה יותר - בלי להתמודד עם הגולמי http.useragent תכונה:

HttpProtocolParams.setUserAgent (client.getParams (), "Mozilla / 5.0 Firefox / 26.0");

דוגמה מלאה תיראה כך:

@Test ציבורי בטל כאשרClientUsesCustomUserAgent_thenCorrect () זורק ClientProtocolException, IOException {DefaultHttpClient client = new DefaultHttpClient (); HttpProtocolParams.setUserAgent (client.getParams (), "Mozilla / 5.0 Firefox / 26.0"); HttpGet בקשה = HttpGet חדש ("// www.github.com"); client.execute (בקשה); }

2.2. לאחר HttpClient 4.3

בגרסה האחרונה של לקוח אפאצ'י (לאחר 4.3), הדבר מושג בצורה נקייה הרבה יותר, באמצעות ממשקי ה- API הרהוטים החדשים:

@Test ציבורי בטל כאשר RequestHasCustomUserAgent_thenCorrect () זורק ClientProtocolException, IOException {מופע HttpClient = HttpClients.custom (). SetUserAgent ("Mozilla / 5.0 Firefox / 26.0"). Build (); מופע.execute (HttpGet חדש ("// www.github.com")); }

3. הגדרה סוכן משתמש על בקשות אישיות

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

@Test ציבור בטל givenDeprecatedApi_whenRequestHasCustomUserAgent_thenCorrect () זורק ClientProtocolException, IOException {מופע HttpClient = HttpClients.custom (). Build (); HttpGet בקשה = HttpGet חדש (SAMPLE_URL); request.setHeader (HttpHeaders.USER_AGENT, "Mozilla / 5.0 Firefox / 26.0"); מופע.execute (בקשה); }

4. מסקנה

מאמר זה המחיש כיצד תוכלו השתמש ב- HttpClient כדי לשלוח בקשות בהתאמה אישית סוכן משתמש כּוֹתֶרֶת - למשל כדי לדמות התנהגות של דפדפן ספציפי.

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


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