میتوانید از 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 به شما ارائه دهد.