Java पर HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना
आधुनिक Java विकास में, बाहरी वेब सेवाओं और REST API के साथ बातचीत लगभग किसी भी एप्लिकेशन का एक अनिवार्य हिस्सा बन गई है। चाहे आप माइक्रोसर्विस, मोबाइल एप्लिकेशन या कॉर्पोरेट सिस्टम लिख रहे हों, HTTP अनुरोधों को सही ढंग से भेजने का कौशल एक महत्वपूर्ण कौशल है। इस लेख में, हम Java पर HTTP क्लाइंट बनाने के सभी तरीकों पर चर्चा करेंगे: क्लासिक HttpURLConnection से लेकर आधुनिक लाइब्रेरी जैसे java.net.http.HttpClient, OkHttp और RestTemplate तक। आप सीखेंगे कि GET, POST, PUT और DELETE अनुरोध कैसे करें, प्रतिक्रियाओं को कैसे संसाधित करें और अपने कार्य के लिए सही उपकरण कैसे चुनें।
1. क्लासिक दृष्टिकोण: HttpURLConnection
कई वर्षों तक, Java में HTTP के साथ काम करने का मानक तरीका HttpURLConnection क्लास था। यह JDK का हिस्सा है और इसके लिए अतिरिक्त निर्भरता की आवश्यकता नहीं है। हालांकि, इसका API निम्न-स्तरीय और बोझिल माना जाता है, विशेष रूप से जटिल अनुरोधों के लिए।
GET अनुरोध का उदाहरण:
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;
public class HttpURLConnectionExample { public static void main(String[] args) throws Exception { URL url = new URL("https://api.example.com/users"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", "application/json");
int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println("Response: " + response.toString()); }}JSON के साथ POST अनुरोध का उदाहरण:
import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;
public class PostExample { public static void main(String[] args) throws Exception { URL url = new URL("https://api.example.com/users"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true);
String jsonInputString = "{\\"name\\": \\"John\\", \\"age\\": 30}"; try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); }
int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); }}लाभ: JDK में निर्मित, लाइब्रेरी की आवश्यकता नहीं।
नुकसान: जटिल कोड, HTTP/2 का समर्थन नहीं, टाइमआउट और त्रुटियों के साथ असुविधाजनक कार्य।
2. आधुनिक HttpClient (Java 11+)
Java 11 से शुरू करके, मानक लाइब्रेरी में एक नया java.net.http.HttpClient जोड़ा गया। यह HTTP/2, WebSocket, एसिंक्रोनस अनुरोधों का समर्थन करता है और एक अधिक स्वच्छ और आधुनिक API प्रदान करता है।
सिंक्रोनस GET अनुरोध:
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;
public class ModernHttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://a