سورس کد دات نت C# یا VB.NET برای ارسال درخواست‌های HTTP به صورت GET و POST


در دنیای برنامه‌نویسی، ارتباط با سرورهای وب و ارسال درخواست‌های HTTP یکی از مهم‌ترین و پرکاربردترین عملیات‌ها است. مخصوصاً در برنامه‌های تحت دات‌نت، که توسعه برنامه‌های وب، موبایل، و دسکتاپ معمولاً نیازمند این نوع ارتباط است. بنابراین، در این مقاله قصد داریم به صورت کامل و جامع، نحوه نوشتن سورس کد در زبان‌های C# و VB.NET جهت ارسال درخواست‌های HTTP به سرور، با روش‌های GET و POST، را بررسی کنیم.
در ابتدا، باید بدانیم که درخواست‌های HTTP چه هستند و چه تفاوت‌هایی میان GET و POST وجود دارد. سپس، نمونه‌هایی از کدهای کاربردی و عملی، با توضیحات جامع، ارائه می‌دهیم که به توسعه‌دهندگان کمک می‌کند تا بتوانند به راحتی درخواست‌هایشان را در پروژه‌های خود پیاده‌سازی کنند.

مفهوم درخواست‌های HTTP و تفاوت‌های آنها




HTTP (Hypertext Transfer Protocol) پروتکلی است که برای انتقال داده‌ها بین کلاینت و سرور استفاده می‌شود. درخواست‌های HTTP، درخواست‌هایی هستند که کلاینت (مثل مرورگر یا برنامه شما) به سرور می‌فرستد تا اطلاعاتی را درخواست کند یا عملیاتی انجام دهد.
دو روش اصلی برای ارسال درخواست‌ها وجود دارد:
  1. GET: این نوع درخواست برای دریافت داده‌ها از سرور است. پارامترهای درخواست معمولاً در URL قرار می‌گیرند. مثلا، وقتی شما در مرورگر عبارت `http://example.com/search?q=hello` را وارد می‌کنید، در واقع درخواست GET ارسال شده است. یکی از ویژگی‌های مهم GET این است که داده‌ها در URL دیده می‌شوند، بنابراین محدودیت طول URL وجود دارد و نباید برای انتقال اطلاعات حساس استفاده شود.
    2. POST: این درخواست برای ارسال داده‌ها به سرور است، معمولا برای ثبت اطلاعات یا عملیاتی که نیازمند ارسال داده‌های حجیم است. در این حالت، داده‌ها در بدن درخواست قرار می‌گیرند، نه در URL. این روش امن‌تر است و برای ارسال داده‌های حساسی مثل رمز عبورها یا اطلاعات کاربری مناسب‌تر است.

    ابزارهای مورد نیاز در دات‌نت




در دات‌نت، چندین کلاس برای کار با درخواست‌های HTTP وجود دارد، اما محبوب‌ترین و کاربردی‌ترین آن‌ها، کلاس `HttpClient` است که در فضای نام `System.Net.Http` قرار دارد. این کلاس از نسخه‌های جدیدتر دات‌نت است و قابلیت‌های زیادی برای مدیریت درخواست‌ها، زمان‌سنجی، و پشتیبانی از async/await دارد.
همچنین، در نسخه‌های قدیمی‌تر، کلاس `WebRequest` و `WebClient` استفاده می‌شدند، اما در حال حاضر، توصیه می‌شود از `HttpClient` بهره ببرید، چون کارایی و قابلیت اطمینان بیشتری دارد.

نمونه کدهای C# برای ارسال درخواست‌های GET و POST




ارسال درخواست GET با `HttpClient`




در زبان C#، می‌توان به صورت زیر درخواست GET را ارسال کرد:
csharp  

using System;

using System.Net.Http;

using System.Threading.Tasks;
class Program

{

static async Task Main()

{

using (HttpClient client = new HttpClient())

{

try

{

// آدرس URL مورد نظر

string url = "https://jsonplaceholder.typicode.com/posts/1";
// ارسال درخواست GET

HttpResponseMessage response = await client.GetAsync(url);
// بررسی وضعیت پاسخ

if (response.IsSuccessStatusCode)

{

// خواندن محتوای پاسخ

string responseBody = await response.Content.ReadAsStringAsync();

Console.WriteLine(responseBody);

}

else

{

Console.WriteLine($"خطا در درخواست: {response.StatusCode}");

}

}

catch (Exception ex)

{

Console.WriteLine($"استثنا: {ex.Message}");

}

}

}

}


در این کد، ابتدا یک نمونه از `HttpClient` ساخته می‌شود، سپس درخواست GET به URL مورد نظر ارسال می‌شود. پس از دریافت پاسخ، وضعیت آن بررسی شده و در صورت موفقیت، محتوا را به صورت رشته‌ای نمایش می‌دهد.

ارسال درخواست POST با `HttpClient`




برای ارسال داده‌های POST، باید داده‌ها را در قالب `HttpContent` آماده کرده و همراه با درخواست ارسال کنید:
csharp  

using System;

using System.Net.Http;

using System.Text;

using System.Threading.Tasks;
class Program

{

static async Task Main()

{

using (HttpClient client = new HttpClient())

{

try

{

// آدرس URL مقصد

string url = "https://jsonplaceholder.typicode.com/posts";
// داده‌هایی که می‌خواهید ارسال کنید

var jsonData = "{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}";
// تبدیل داده به HttpContent

var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
// ارسال درخواست POST

HttpResponseMessage response = await client.PostAsync(url, content);
// بررسی وضعیت پ... ← ادامه مطلب در magicfile.ir