जावा में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना

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

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

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

परिचय: जावा में HTTP क्लाइंट की आवश्यकता क्यों है?

\n\n

आधुनिक जावा डेवलपमेंट शायद ही कभी बाहरी सेवाओं के साथ बातचीत के बिना होता है। चाहे वह सर्वर पर डेटा भेजना हो, REST API से जानकारी प्राप्त करना हो, या क्लाउड प्लेटफॉर्म के साथ एकीकरण करना हो - हर जगह HTTP क्लाइंट की आवश्यकता होती है। जावा में HTTP अनुरोध करने के कई तरीके हैं, और सही दृष्टिकोण चुनना महत्वपूर्ण है।

\n\n

लंबे समय तक, मानक उपकरण लाइब्रेरी java.net.HttpURLConnection थी, लेकिन जावा 11 के आने के साथ, एक नया, अधिक सुविधाजनक मॉड्यूल java.net.http सामने आया। इस लेख में, हम जावा में HTTP क्लाइंट के साथ काम करने के सभी चरणों को समझेंगे: सरल GET अनुरोधों से लेकर JSON भेजने और त्रुटियों को संभालने तक।

\n\n

यह लेख उन डेवलपर्स के लिए है जो पहले से ही जावा की मूल बातों से परिचित हैं, लेकिन नेटवर्क अनुरोधों के बारे में अपने ज्ञान को व्यवस्थित करना चाहते हैं। हम जावा 11+ से अंतर्निहित HttpClient का उपयोग करेंगे, क्योंकि यह आधुनिक और अनुशंसित दृष्टिकोण है।

\n\n

1. HTTP क्लाइंट की मूल बातें: निर्माण और कॉन्फ़िगरेशन

\n\n

अनुरोध भेजने से पहले, आपको HttpClient का एक इंस्टेंस बनाना होगा। यह केंद्रीय ऑब्जेक्ट है जिसके माध्यम से सभी HTTP ऑपरेशन निष्पादित किए जाते हैं। आइए बुनियादी कॉन्फ़िगरेशन देखें।

\n\n

क्लाइंट बनाना

\n\n

सबसे आसान तरीका स्टैटिक मेथड newHttpClient() का उपयोग करना है:

\n\n
import java.net.http.HttpClient;\n\nHttpClient client = HttpClient.newHttpClient();
\n\n

हालांकि, वास्तविक प्रोजेक्ट्स के लिए अक्सर टाइमआउट, प्रोटोकॉल संस्करण या प्रॉक्सी सेट करने की आवश्यकता होती है। यहाँ एक विस्तारित कॉन्फ़िगरेशन का उदाहरण है:

\n\n
import java.net.http.HttpClient;\nimport java.time.Duration;\n\nHttpClient client = HttpClient.newBuilder()\n    .version(HttpClient.Version.HTTP_2) // HTTP/2 का उपयोग करें\n    .connectTimeout(Duration.ofSeconds(10)) // कनेक्शन टाइमआउट\n    .followRedirects(HttpClient.Redirect.NORMAL) // रीडायरेक्ट का स्वचालित अनुसरण\n    .build();
\n\n

महत्वपूर्ण कॉन्फ़िगरेशन पैरामीटर

\n\n
    \n
  • version — HTTP/1.1 और HTTP/2 के बीच चयन (डिफ़ॉल्ट HTTP/2, यदि सर्वर समर्थन करता है)
  • \n
  • connectTimeout — कनेक्शन के लिए अधिकतम प्रतीक्षा समय
  • \n
  • followRedirects — रीडायरेक्ट को संभालने की नीति (NEVER, ALWAYS, NORMAL)
  • \n
  • proxy — प्रॉक्सी सर्वर कॉन्फ़िगरेशन (यदि आवश्यक हो)
  • \n
\n\n

ध्यान दें: HttpClient के एक इंस्टेंस का उपयोग कई अनुरोधों के लिए किया जा सकता है। यह थ्रेड-सेफ है, इसलिए इसे एक बार बनाया जा सकता है और पूरे एप्लिकेशन में पुन: उपयोग किया जा सकता है।

\n\n

2. HTTP अनुरोध बनाना और भेजना

\n\n

अब मुख्य भाग पर आते हैं - अनुरोध तैयार करना। जावा 11+ में इसके लिए क्लास HttpRequest का उपयोग किया जाता है। आइए मुख्य प्रकार के अनुरोधों को देखें।

\n\n

GET अनुरोध: डेटा प्राप्त करना

\n\n

GET सबसे सरल प्रकार का अनुरोध है। इसका उपयोग सर्वर से डेटा प्राप्त करने के लिए किया जाता है। उदाहरण:

\n\n
import java.net.URI;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create("https://api.example.com/users"))\n    .GET() // स्पष्ट रूप से मेथड निर्दिष्ट करें (इसे छोड़ा जा सकता है, GET डिफ़ॉल्ट है)\n    .build();\n\nHttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println("स्थिति: " + response.statusCode());\nSystem.out.println("प्रतिक्रिया का मुख्य भाग: " + response.body());
\n\n

मेथड send() एक सिंक्रोनस अनुरोध निष्पादित करता है। यदि एसिंक्रोनस निष्पादन की आवश्यकता है, तो sendAsync() का उपयोग करें, जो CompletableFuture लौटाता है।

\n\n

POST अनुरोध: डेटा भेजना

\n\n

POST का उपयोग सर्वर पर डेटा भेजने के लिए किया जाता है। अक्सर यह JSON या फॉर्म होता है। आइए दोनों विकल्पों पर विचार करें।

\n\n

JSON के साथ POST:

\n\n
import java.net.http.HttpRequest.BodyPublishers;\n\nString json = "{\\"name\\":\\"इवान\\",\\"email\\":\\"iva                

ब्लॉग

पुस्तक अनुशंसाएँ