Java के लिए HTTP-क्लाइंट: शीर्ष लाइब्रेरियों का अवलोकन (Java 11, Apache, OkHttp, Retrofit)

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java के लिए HTTP-क्लाइंट: शीर्ष लाइब्रेरियों का अवलोकन

आधुनिक Java विकास में, लगभग कोई भी एप्लिकेशन HTTP प्रोटोकॉल के माध्यम से इंटरैक्शन के बिना नहीं चलता। REST API को अनुरोध भेजना, फ़ाइलें डाउनलोड करना, माइक्रोसर्विसेज़ के साथ काम करना - इन सबके लिए एक विश्वसनीय और सुविधाजनक HTTP-क्लाइंट की आवश्यकता होती है। इस लेख में, हम Java में HTTP के साथ काम करने के लिए चार सबसे लोकप्रिय लाइब्रेरियों पर विचार करेंगे: मानक HttpClient (Java 11+), Apache HttpClient, OkHttp और Retrofit। आप उनकी विशेषताओं, मजबूत पक्षों को जानेंगे और व्यावहारिक कोड उदाहरण प्राप्त करेंगे।



1. Java 11 HttpClient (java.net.http)

Java 11 से शुरू करते हुए, मानक लाइब्रेरी में एक आधुनिक HTTP-क्लाइंट जोड़ा गया, जिसे पुराने HttpURLConnection को बदलने के लिए डिज़ाइन किया गया है। यह HTTP/2, WebSocket, एसिंक्रोनस अनुरोध और रिएक्टिव स्ट्रीम का समर्थन करता है।

लाभ:

  • किसी अतिरिक्त निर्भरता की आवश्यकता नहीं है - JDK में निर्मित।
  • HTTP/2 का समर्थन और प्रोटोकॉल का स्वचालित अपग्रेड।
  • सिंक्रोनस और एसिंक्रोनस कॉल के साथ सुविधाजनक API।
  • कुकी, रीडायरेक्ट और प्रमाणीकरण के प्रसंस्करण के लिए अंतर्निहित समर्थन।

सिंक्रोनस GET-अनुरोध का उदाहरण:

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;

public class Java11HttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1")) .GET() .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("Status code: " + response.statusCode()); System.out.println("Body: " + response.body()); }}

एसिंक्रोनस POST-अनुरोध का उदाहरण:

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpRequest.BodyPublishers;import java.util.concurrent.CompletableFuture;

public class AsyncPostExample { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://jsonplaceholder.typicode.com/posts")) .header("Content-Type", "application/json") .POST(BodyPublishers.ofString("{\\"title\\":\\"foo\\",\\"body\\":\\"bar\\",\\"userId\\":1}")) .build();

CompletableFuture<HttpResponse<String>> future = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()); future.thenAccept(response -> { System.out.println("Status: " + response.statusCode()); System.out.println("Body: " + response.body()); }).join(); }}


2. Apache HttpClient

Apache की क्लासिक लाइब्रेरी, जो लंबे समय से डी-फैक्टो मानक रही है। नवीनतम संस्करण (5.x) में महत्वपूर्ण सुधार हुए हैं: HTTP/2 का समर्थन, कनेक्शन पूल प्रबंधन में सुधार और अधिक लचीला कॉन्फ़िगरेशन।

लाभ:

  • अधिकतम लचीलापन और बारीक ट्यूनिंग (टाइमआउट, इंटरसेप्टर, कैशिंग)।
  • समय-परीक्षित स्थिरता।
  • विभिन्न प्रमाणीकरण योजनाओं का समर्थन (Basic, Digest, NTLM)।
  • प्रॉक्सी और SSL के साथ अच्छा एकीकरण।

Apache HttpClient 5 के साथ GET-अनुरोध का उदाहरण:

import org.apache.hc.client5.http.classic.methods.HttpGet;import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;import org.apache.hc.client5.http.impl.classic.Clos                    

अनुशंसाएँ