Java पर HTTP क्लाइंट: सही तरीके से अनुरोध करना
आधुनिक वेब डेवलपमेंट में, लगभग कोई भी एप्लिकेशन दूरस्थ सर्वरों के साथ बातचीत के बिना नहीं चलता। चाहे वह REST API के साथ एकीकरण हो, डेटा डाउनलोड करना हो या फॉर्म सबमिट करना हो — Java पर HTTP अनुरोधों को सही ढंग से संभालने का कौशल डेवलपर के लिए अनिवार्य है। इस लेख में, हम Java पर एक विश्वसनीय HTTP क्लाइंट बनाने, आधुनिक दृष्टिकोणों और सर्वोत्तम प्रथाओं पर चर्चा करेंगे।
सही HTTP क्लाइंट का उपयोग करना क्यों महत्वपूर्ण है?
कई नौसिखिए डेवलपर पुराने HttpURLConnection क्लास का उपयोग करते हैं, जो Java 1.1 में आया था। हालांकि यह काम करता है, इसका API बोझिल, असुविधाजनक है और इसमें बहुत अधिक बॉयलरप्लेट कोड की आवश्यकता होती है। Java 11 से शुरू करके, मानक लाइब्रेरी में आधुनिक java.net.http.HttpClient शामिल है, जो प्रदान करता है:
- HTTP/2 और WebSocket के लिए समर्थन
- CompletableFuture के माध्यम से एसिंक्रोनस अनुरोध
- सरल और स्पष्ट Builder-पैटर्न
- कुकीज़ और रीडायरेक्ट का स्वचालित प्रबंधन
Java 11+ में HttpClient के साथ बुनियादी कार्य
GET अनुरोध भेजने का एक बुनियादी उदाहरण देखें। पहले क्लाइंट का एक इंस्टेंस बनाएं, फिर अनुरोध तैयार करें और इसे भेजें।
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class SimpleHttpClient { public static void main(String[] args) throws Exception { // कनेक्शन टाइमआउट के साथ क्लाइंट बनाएं HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
// GET अनुरोध तैयार करें HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .timeout(Duration.ofSeconds(30)) .header("Accept", "application/json") .GET() .build();
// अनुरोध भेजें और प्रतिक्रिया प्राप्त करें HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("स्थिति: " + response.statusCode()); System.out.println("प्रतिक्रिया का मुख्य भाग: " + response.body()); }}BodyHandlers.ofString() के उपयोग पर ध्यान दें — यह प्रतिक्रिया के मुख्य भाग को स्ट्रिंग के रूप में प्राप्त करने का एक सुविधाजनक तरीका है। यदि आपको JSON संसाधित करने की आवश्यकता है, तो BodyHandlers.ofInputStream() का उपयोग करना और इसे पार्सर को देना बेहतर है।
मुख्य भाग के साथ POST अनुरोध भेजना
सर्वर पर डेटा भेजने के लिए (उदाहरण के लिए, उपयोगकर्ता पंजीकरण करते समय) POST अनुरोध का उपयोग किया जाता है। JSON भेजने का एक उदाहरण देखें:
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;
public class PostRequestExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient();
String json = """ { "name": "इवान इवानोव", "email": "ivan@example.com", "age": 30 } """;
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/users")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(json)) .timeout(Duration.ofSeconds(15)) .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 201) { System.out.println("उपयोगकर्ता सफलतापूर्वक बनाया गया!"); System.out.println("ID: " + response.body()); } else { System