Java के लिए HTTP क्लाइंट: HTTP के साथ काम करने के लिए शीर्ष लाइब्रेरीज़
आधुनिक Java विकास शायद ही कभी HTTP प्रोटोकॉल के माध्यम से दूरस्थ सर्वरों के साथ बातचीत के बिना होता है। चाहे वह REST API कॉल हो, फ़ाइल अपलोड करना हो, या माइक्रोसर्विसेज़ के साथ एकीकरण हो — डेवलपर को एक विश्वसनीय और सुविधाजनक HTTP क्लाइंट की आवश्यकता होती है। इस लेख में, हम Java के लिए तीन प्रमुख लाइब्रेरीज़ पर विचार करेंगे: OkHttp, Apache HttpClient और बिल्ट-इन Java HttpClient (Java 11 से शुरू)। आप उनकी विशेषताओं को जानेंगे, कोड उदाहरण देखेंगे और समझेंगे कि अपने प्रोजेक्ट के लिए कौन सी लाइब्रेरी चुननी है।
1. Java HttpClient (बिल्ट-इन, Java 11+)
Java 11 से शुरू करके, मानक लाइब्रेरी में एक आधुनिक HTTP क्लाइंट शामिल किया गया, जो पुराने HttpURLConnection की जगह लेता है। यह HTTP/2, WebSocket, एसिंक्रोनस अनुरोध और रिएक्टिव स्ट्रीम को सपोर्ट करता है।
विशेषताएँ:
- किसी अतिरिक्त डिपेंडेंसी की आवश्यकता नहीं — यह JDK में शामिल है।
- सिंक्रोनस (
send) और एसिंक्रोनस (sendAsync) कॉल का समर्थन। - HTTP/2 के साथ काम करना और HTTP/1.1 पर स्वचालित डाउनग्रेड।
- WebSocket के लिए बिल्ट-इन सपोर्ट।
BodyPublishersके माध्यम से अनुरोध बॉडी औरBodyHandlersके माध्यम से प्रतिक्रिया के साथ सुविधाजनक कार्य।
उदाहरण: GET अनुरोध
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;
public class JavaHttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.github.com/users/octocat")) .GET() .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("स्थिति: " + response.statusCode()); System.out.println("बॉडी: " + response.body()); }}उदाहरण: एसिंक्रोनस POST अनुरोध
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;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(HttpRequest.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("स्थिति: " + response.statusCode()); System.out.println("उत्तर: " + response.body()); }).join(); }}2. OkHttp (Square)
OkHttp Android और Java के लिए सबसे लोकप्रिय लाइब्रेरीज़ में से एक है। यह उच्च प्रदर्शन, स्वचालित कनेक्शन प्रबंधन और HTTP/2 और SPDY के समर्थन के लिए प्रसिद्ध है। OkHttp का उपयोग Retrofit और Picasso के अंदर किया जाता है।
विशेषताएँ:
- HTTP/2 और स्वचालित अनुरोध मल्टीप्लेक्सिंग का समर्थन।
- बिल्ट-इन कनेक्शन पूल और सॉकेट का पुन: उपयोग।
- GZip संपीड़न का पारदर्शी प्रबंधन।
- लॉगिंग, प्रमाणीकरण और पुन: प्रयास के लिए इंटरसेप्टर का समर्थन।
- सरल और fluent-जैसे अनुरोध बिल्डर।
कनेक्शन (Maven):
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.