Tôi đang cố gắng thực hiện một biểu mẫu nhiều bài đăng bằng cách sử dụng HttpClient trong C# và tìm mã sau không hoạt động.HttpClient Multipart Form Đăng trong C#
Chú ý:
var jsonToSend = JsonConvert.SerializeObject(json, Formatting.None, new IsoDateTimeConverter());
var multipart = new MultipartFormDataContent();
var body = new StringContent(jsonToSend, Encoding.UTF8, "application/json");
multipart.Add(body);
multipart.Add(new ByteArrayContent(File.ReadAllBytes("test.txt")), "test", "test.txt");
var httpClient = new HttpClient();
var response = httpClient.PostAsync(new Uri("http://localhost:55530"), multipart).Result;
Full Chương trình:
namespace CourierMvc.Worker
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Hit any key to make request.");
Console.ReadKey();
try
{
var request = new RestRequest(Method.POST)
{
Resource = "http://localhost:55530"
};
var json = new CourierMessage
{
Id = Guid.NewGuid().ToString(),
Key = "awesome",
From = "[email protected]",
To = new[] { "[email protected]", "[email protected]" },
Subject = "test",
Body = "body",
Processed = DateTimeOffset.UtcNow,
Received = DateTime.Now,
Created = DateTime.Now,
Sent = DateTime.Now,
Links = new[] { new Anchor { Link = "http://google.com" }, new Anchor { Link = "http://yahoo.com" } }
};
var jsonToSend = JsonConvert.SerializeObject(json, Formatting.None, new IsoDateTimeConverter());
var multipart = new MultipartFormDataContent();
var body = new StringContent(jsonToSend, Encoding.UTF8, "application/json");
multipart.Add(body);
multipart.Add(new ByteArrayContent(File.ReadAllBytes("test.txt")), "test", "test.txt");
var httpClient = new HttpClient();
var response = httpClient.PostAsync(new Uri("http://localhost:55530"), multipart).Result;
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
}
tôi thực sự không có ý tưởng tại sao nó không hoạt động. Tôi nhận được các tập tin để gửi đến điểm cuối, nhưng cơ thể (json) không bao giờ đạt được điều đó. Tôi có làm điều gì sai?
Server Side Mã Yêu cầu:
namespace CourierMvc.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return Content("Home#Index");
}
[ValidateInput(false)]
public ActionResult Create(CourierMessage input)
{
var files = Request.Files;
return Content("OK");
}
}
}
Route Config:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Create", id = UrlParameter.Optional }
);
}
Tại sao ai đó bỏ phiếu này? Tôi đã cung cấp mã và giải thích những gì tôi đang cố gắng làm. Đó là một tuyên bố rõ ràng. –
Có thể hữu ích nếu bạn cũng hiển thị mã phía máy chủ để chúng tôi có thể thấy cách bạn đang cố đọc nó. –
Mã phía máy chủ chỉ là một điểm cuối ASP.NET MVC, với mô hình làm kiểu đầu vào. Không có gì ngoạn mục ở đó, nhưng tôi đặt nó lên để cho thấy không có shenanigans. –