C# में HTTP क्लाइंट: अनुरोध सही तरीके से करना

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

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

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

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

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



C# (.NET) में HTTP के साथ काम करने के लिए मुख्य वर्ग

उदाहरणों पर जाने से पहले, यह समझना महत्वपूर्ण है कि .NET प्लेटफॉर्म कौन से उपकरण प्रदान करता है। मुख्य वर्ग:

  • HttpClient - अनुरोध भेजने और प्रतिक्रिया प्राप्त करने के लिए मुख्य वर्ग। इसे सिंगलटन (पूरे एप्लिकेशन के लिए एक इंस्टेंस) के रूप में उपयोग किया जाना चाहिए।
  • HttpRequestMessage - अनुरोध को विस्तार से कॉन्फ़िगर करने की अनुमति देता है: विधि, हेडर, बॉडी, प्रोटोकॉल संस्करण।
  • HttpResponseMessage - सर्वर से प्रतिक्रिया शामिल करता है: स्थिति, हेडर, बॉडी।
  • HttpContent - अनुरोध या प्रतिक्रिया के बॉडी को प्रस्तुत करने के लिए बेस वर्ग (उदाहरण: StringContent, ByteArrayContent, MultipartFormDataContent)।

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



HttpClient सेटअप: मूल उदाहरण

न्यूनतम सेटअप पर विचार करें। HttpClient का एक इंस्टेंस बनाएं और बेस एड्रेस सेट करें:

using System;using System.Net.Http;using System.Threading.Tasks;

public class ApiService{ private static readonly HttpClient client = new HttpClient();

public ApiService() { client.BaseAddress = new Uri("https://api.example.com/"); client.DefaultRequestHeaders.Add("User-Agent", "C# HttpClient App"); client.DefaultRequestHeaders.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); }

public async Task<string> GetDataAsync(string endpoint) { HttpResponseMessage response = await client.GetAsync(endpoint); response.EnsureSuccessStatusCode(); // त्रुटि होने पर अपवाद फेंकेगा return await response.Content.ReadAsStringAsync(); }}

response.EnsureSuccessStatusCode() पर ध्यान दें - यह जांचने का एक सरल तरीका है कि अनुरोध सफलतापूर्वक पूरा हुआ (कोड 2xx)।



C# में HTTP अनुरोधों के व्यावहारिक उदाहरण

अब विशिष्ट परिदृश्यों पर आते हैं। हम GET और POST अनुरोधों के साथ-साथ हेडर के साथ काम करना और त्रुटि प्रबंधन देखेंगे।



1. पैरामीटर के साथ GET-अनुरोध

क्वेरी स्ट्रिंग में पैरामीटर पास करने के लिए, Microsoft.AspNetCore.WebUtilities से QueryHelpers संग्रह का उपयोग कर सकते हैं या मैन्युअल रूप से URL बना सकते हैं। नीचे मैन्युअल निर्माण का उदाहरण है:

public async Task<string> SearchUsersAsync(string name, int page){    var query = $"/users?name={Uri.EscapeDataString(name)}&page={page}";    HttpResponseMessage response = await client.GetAsync(query);    response.EnsureSuccessStatusCode();    return await response.Content.ReadAsStringAsync();}

विशेष वर्णों से त्रुटियों से बचने के लिए पैरामीटर को एस्केप करने के लिए हमेशा Uri.EscapeDataString() का उपयोग करें।



2. JSON बॉडी के साथ POST-अनुरोध

JSON प्रारूप में डेटा भेजने के लिए System.Text.Json (या Newtonsoft.Json) लाइब्रेरी का उपयोग करना सुविधाजनक है। ऑब्जेक्ट को JSON में बदलें और भेजें:

using System.Text;using System.Text.Json;

public

ब्लॉग

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