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


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

using System;

using System.Net.Http;

using System.Threading.Tasks;
namespace HttpClientExample

{

class Program

{

static async Task Main(string[] args)

{

// ایجاد نمونه‌ای از HttpClient

using (HttpClient client = new HttpClient())

{

try

{

// تعیین URL مقصد

string url = "https://api.example.com/data";
// ارسال درخواست GET

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

if (response.IsSuccessStatusCode)

{

// خواندن محتوا به صورت رشته‌ای

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

Console.WriteLine("پاسخ دریافتی:");

Console.WriteLine(responseData);

}

else

{

Console.WriteLine($"خطا در دریافت داده‌ها: {response.StatusCode}");

}

}

catch (Exception ex)

{

Console.WriteLine($"خطای پیش آمده: {ex.Message}");

}

}

}

}

}


در این مثال، ابتدا یک نمونه از HttpClient ساخته می‌شود. سپس، با استفاده از متد GetAsync، درخواست به URL مشخص ارسال می‌شود. پس از آن، وضعیت پاسخ بررسی شده و در صورت موفقیت، داده‌های دریافتی به صورت رشته‌ای خوانده و نمایش داده می‌شوند. در غیر این صورت، خطاهای مربوطه نشان داده می‌شوند.
نکات مهم در پیاده‌سازی درخواست GET
- استفاده از `using` برای مدیریت منابع

- بررسی وضعیت `IsSuccessStatusCode` برای اطمینان از صحت پاسخ

- استفاده از `async` و `await` برای جلوگیری از بلوکه شدن نخ برنامه

- مدیریت استثنائات با بلوک try-catch برای جلوگیری از خطاهای غیرمنتظره
ارسال درخواست HTTP به روش POST در دات نت C#
درخواست‌های POST برای ارسال داده‌ها، مانند فرم‌ها، فایل‌ها، یا اطلاعات ساخت‌یافته، به سرور کاربرد دارند. در این نوع درخواست، باید محتوای مورد نظر را در قالب مناسبی به سرور ارسال کنیم، که معمولا به صورت JSON، فرم-urlencoded، یا multipart/form-data است. در ادامه، نمونه‌هایی از ارسال درخواست POST با استفاده از HttpClient آورده شده است.
ارسال داده‌های JSON به سرور:
csharp  

using System;

using System.Net.Http;

using System.Text;

using System.Threading.Tasks;

using Newtonsoft.Json;
namespace HttpPostExample

{

class Program

{

static async Task Main(string[] args)

{

using (HttpClient client = new HttpClient())

{

var url = "https://api.example.com/submit";
// نمونه داده‌ای به صورت شیء

var postData = new

{

Name = "Ali",

Age = 30,

Email = "ali@example.com"

};
// تبدیل شیء به رشته JSON

string jsonData = JsonConvert.SerializeObject(postData);

... ← ادامه مطلب در magicfile.ir