C# में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना
\n\n.NET प्लेटफ़ॉर्म पर आधुनिक विकास में, HTTP-अनुरोधों के साथ काम करना एक प्रमुख कार्य है। चाहे वह बाहरी REST API के साथ एकीकरण हो, सर्वर पर डेटा भेजना हो या वेब पेज लोड करना हो - C# में HttpClient का सही उपयोग एप्लिकेशन के प्रदर्शन और स्थिरता के लिए महत्वपूर्ण है। इस लेख में, हम C# में HTTP क्लाइंट के साथ काम करने के सभी पहलुओं को कवर करेंगे: बुनियादी उदाहरणों से लेकर उन्नत तकनीकों, त्रुटि प्रबंधन और सर्वोत्तम प्रथाओं तक।
1. C# में HttpClient के साथ काम करने की मूल बातें
\n\nHttpClient HTTP अनुरोध भेजने और प्रतिक्रिया प्राप्त करने के लिए .NET में मुख्य वर्ग है। यह System.Net.Http नेमस्पेस में स्थित है और .NET Framework 4.5 और .NET Core/.NET 5+ के सभी संस्करणों से उपलब्ध है।
महत्वपूर्ण नियम: HttpClient पुन: उपयोग के लिए डिज़ाइन किया गया है। प्रत्येक अनुरोध के लिए एक नया इंस्टेंस बनाना एक एंटी-पैटर्न है, जो सॉकेट थकावट (socket exhaustion) का कारण बन सकता है। इसके बजाय, एक स्थिर या सिंगलटन इंस्टेंस का उपयोग करें।
GET अनुरोध का मूल उदाहरण:
\n\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nclass Program\n{\n private static readonly HttpClient client = new HttpClient();\n\n static async Task Main(string[] args)\n {\n try\n {\n HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");\n response.EnsureSuccessStatusCode();\n string responseBody = await response.Content.ReadAsStringAsync();\n Console.WriteLine(responseBody);\n }\n catch (HttpRequestException e)\n {\n Console.WriteLine($"अनुरोध त्रुटि: {e.Message}");\n }\n }\n}\n\nइस उदाहरण में, हम एक स्थिर HttpClient बनाते हैं, GET अनुरोध भेजते हैं, EnsureSuccessStatusCode() के साथ प्रतिक्रिया की सफलता की जांच करते हैं और प्रतिक्रिया बॉडी को स्ट्रिंग के रूप में पढ़ते हैं।
2. HTTP अनुरोधों के प्रकार और हेडर के साथ काम करना
\n\nGET के अलावा, HttpClient सभी बुनियादी HTTP विधियों का समर्थन करता है: POST, PUT, DELETE, PATCH और अन्य। आइए JSON डेटा के साथ POST अनुरोध भेजने पर विचार करें - REST API के साथ काम करते समय यह सबसे आम परिदृश्य है।
JSON के साथ POST अनुरोध का उदाहरण:
\n\nusing System;\nusing System.Net.Http;\nusing System.Text;\nusing System.Text.Json;\nusing System.Threading.Tasks;\n\nclass Program\n{\n private static readonly HttpClient client = new HttpClient();\n\n static async Task Main(string[] args)\n {\n var data = new { Name = "John", Age = 30 };\n string json = JsonSerializer.Serialize(data);\n var content = new StringContent(json, Encoding.UTF8, "application/json");\n\n try\n {\n HttpResponseMessage response = await client.PostAsync("https://api.example.com/users", content);\n response.EnsureSuccessStatusCode();\n string result = await response.Content.ReadAsStringAsync();\n Console.WriteLine($"उपयोगकर्ता बनाया गया: {result}");\n }\n catch (HttpRequestException e)\n {\n Console.WriteLine($"त्रुटि: {e.Message}");\n }\n }\n}\n\nहेडर के साथ काम करना: अक्सर API को प्रमाणीकरण टोकन या अन्य हेडर भेजने की आवश्यकता होती है। उन्हें दो तरीकों से जोड़ा जा सकता है:
\n\n- \n
- वैश्विक रूप से —
DefaultRequestHeadersप्रॉपर्टी के माध्यम से (क्लाइंट के सभी अनुरोधों के लिए)। \n - स्थानीय रूप से —
HttpRequestMessageऑब्जेक्ट मेंHeadersसंग्रह के माध्यम से (विशिष्ट अनुरोध के लिए)। \n
Authorization हेडर जोड़ने का उदाहरण:
\n\n// वैश्विक रूप से\nclient.DefaultRequestHeaders.Authorization = \n new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "your-token");\n\n// स्थानीय रूप से\nvar request = new HttpR