میتوانید از HttpClient برای ارسال درخواست دادههای multipart/form-data با هر دو بخش تصویر و داده JSON در سی شارپ استفاده کنید. در اینجا یک مثال گام به گام برای توضیح این موضوع آورده شده است:

مثال: ارسال تصویر و JSON با استفاده از HttpClient
1. بسته NuGet مورد نیاز را نصب کنید:
مطمئن شوید که بسته System.Net.Http را نصب کرده اید. می توانید آن را از طریق NuGet Package Manager یا با اجرای دستور زیر در Package Manager Console نصب کنید:
Install-Package System.Net.Http
2. درخواست HttpClient را آماده کنید:
یک نمونه از HttpClient ایجاد کنید و محتوای multipart/form-data داده را آماده کنید:
using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Newtonsoft.Json; namespace YourNamespace { class Program { static async Task Main(string[] args) { using (HttpClient client = new HttpClient()) { // Create the multipart/form-data content using (var content = new MultipartFormDataContent()) { // Add the image file content var imageContent = new ByteArrayContent(System.IO.File.ReadAllBytes("path_to_your_image.jpg")); imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); content.Add(imageContent, "image", "image.jpg"); // Add the JSON content var jsonObject = new { Name = "Sample", Description = "Sample Description" }; var jsonContent = new StringContent(JsonConvert.SerializeObject(jsonObject), System.Text.Encoding.UTF8, "application/json"); content.Add(jsonContent, "jsonPayload"); // Send the request HttpResponseMessage response = await client.PostAsync("your_endpoint_url", content); if (response.IsSuccessStatusCode) { Console.WriteLine("Success!"); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } } } } }
توضیح:
1. نمونه HttpClient: یک نمونه HttpClient برای ارسال درخواست ایجاد کنید.
2. MultipartFormDataContent: یک نمونه MultipartFormDataContent برای نگهداری محتوای multipart/form-data ایجاد کنید.
3. محتوای تصویر: محتوای فایل تصویر را به عنوان ByteArrayContent اضافه کنید. هدر ContentType را روی نوع رسانه مناسب تنظیم کنید (به عنوان مثال، "image/jpeg").
4. محتوای JSON: یک شی JSON ایجاد کنید، آن را با استفاده از JsonConvert.SerializeObject() سریال کنید و آن را به عنوان StringContent با ContentType که روی "application/json" تنظیم شده است، اضافه کنید.
5. ارسال درخواست: از HttpClient.PostAsync() برای ارسال درخواست multipart/form-data استفاده کنید. وضعیت پاسخ را بررسی کنید تا مشخص شود آیا درخواست موفقیت آمیز بوده است یا خیر.
این مثال باید به شما کمک کند تا یک تصویر و داده JSON را با هم در یک درخواست HTTP POST ارسال کنید.
بیایید به نحوه ارسال درخواست POST فرم multipart/form-data با استفاده از HttpClient با یک تصویر و داده JSON عمیق تر بپردازیم. در اینجا یک مثال جامع تر است که همچنین شامل مدیریت خطا و نام فایل سفارشی برای آپلود تصویر است.
مثال جامع: ارسال تصویر و JSON با HttpClient
using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Newtonsoft.Json; namespace YourNamespace { class Program { static async Task Main(string[] args) { using (HttpClient client = new HttpClient()) { try { // Create the multipart/form-data content using (var content = new MultipartFormDataContent()) { // Add the image file content var imageFilePath = "path_to_your_image.jpg"; var imageContent = new ByteArrayContent(System.IO.File.ReadAllBytes(imageFilePath)); imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg"); content.Add(imageContent, "image", "custom_filename.jpg"); // Add the JSON content var jsonObject = new { Name = "Sample", Description = "Sample Description" }; var jsonContent = new StringContent(JsonConvert.SerializeObject(jsonObject), System.Text.Encoding.UTF8, "application/json"); content.Add(jsonContent, "jsonPayload"); // Send the request var response = await client.PostAsync("your_endpoint_url", content); response.EnsureSuccessStatusCode(); // Read the response var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine("Response: " + responseBody); } } catch (Exception ex) { Console.WriteLine("An error occurred: " + ex.Message); } } } } }
توضیح:
1. نمونه HttpClient: یک نمونه HttpClient برای رسیدگی به درخواست ایجاد کنید.
2. MultipartFormDataContent: برای نگهداری داده های فرم، MultipartFormDataContent را راه اندازی کنید.
3. محتوای تصویر:
- فایل تصویر را به صورت بایت بخوانید و یک ByteArrayContent ایجاد کنید.
- نوع محتوا را روی image/jpeg تنظیم کنید.
- آن را با یک نام فایل سفارشی (custom_filename.jpg) به محتوای چند قسمتی اضافه کنید.
4. محتوای JSON:
- یک شی ایجاد کنید، آن را با استفاده از JsonConvert.SerializeObject() به JSON سریال کنید.
- یک StringContent ایجاد کنید و نوع محتوای آن را روی application/json قرار دهید.
- آن را با نام jsonPayload به محتوای چند قسمتی اضافه کنید.
5. ارسال درخواست:
- از PostAsync برای ارسال درخواست چندبخشی/فرم-داده استفاده کنید.
- اطمینان حاصل کنید که پاسخ با استفاده از () EnsureSuccessStatusCode نشان دهنده موفقیت است.
- محتوای پاسخ را بخوانید و نمایش دهید.
6. مدیریت خطا: منطق را در یک بلوک try-catch بپیچید تا هرگونه استثنای احتمالی را مدیریت کنید.
سفارشی کردن درخواست
- مسیرهای فایل: مطمئن شوید که مسیر فایل تصویر درست است.
- انواع محتوا: انواع محتوا را در صورت نیاز برای انواع مختلف فایل تنظیم کنید (به عنوان مثال، "image/png" برای تصاویر PNG).
- نشانی اینترنتی نقطه پایانی: «your_endpoint_url» را با نشانی اینترنتی نقطه پایانی API واقعی جایگزین کنید.
این باید یک مثال قوی از ارسال تصویر و داده JSON در یک درخواست HTTP POST با استفاده از HttpClient به شما ارائه دهد.