You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中用HttpClient向ASP.NET Core接口发送含列表的Applicant对象

解决方案

首先明确:目标接口使用[FromBody]接收对象时,ASP.NET Core默认期望请求体为JSON格式,而非multipart/form-data。如果对方接口无特殊配置,用JSON序列化发送是更规范且简单的方式。

方式一:适配[FromBody]的JSON请求(推荐)

直接将整个Applicant对象序列化为JSON字符串,用StringContent作为请求体:

byte[] report1 = new UTF8Encoding(true).GetBytes("This is a test report1");
byte[] report2 = new UTF8Encoding(true).GetBytes("This is a test report2");

var reportObject = new
{
    FirstName = "John",
    LastName = "Doe",
    Reports = new[]
    {
        new { ReportName = "6 week Report", ReportFile = report1 },
        new { ReportName = "12 week Report", ReportFile = report2 } // 多报告示例
    }
};

var baseUrl = "http://localhost:1111"; // 务必补充http/https协议
var endpoint = "/api/validate-reports";

HttpClient httpClient = new HttpClient();

// 序列化为JSON格式内容
var json = JsonSerializer.Serialize(reportObject);
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await httpClient.PostAsync($"{baseUrl}{endpoint}", content);

if (!response.IsSuccessStatusCode)
{
    throw new Exception($"请求失败: {response.StatusCode}");
}    
return Results.Ok("报告已处理");

方式二:使用MultipartFormDataContent(需接口支持[FromForm])

如果对方接口实际是用[FromForm]接收(而非[FromBody]),可通过索引命名字段的方式添加列表项,格式为Reports[N].PropertyName:

替换你代码中注释的部分,添加如下代码:

// 遍历Reports列表,按索引逐个添加字段
for (int i = 0; i < reportOjbect.Reports.Length; i++)
{
    var report = reportOjbect.Reports[i];
    // 添加ReportName,字段名格式:Reports[index].ReportName
    content.Add(new StringContent(report.ReportName), $"Reports[{i}].ReportName");
    // 添加ReportFile,字段名格式:Reports[index].ReportFile
    content.Add(new ByteArrayContent(report.ReportFile), $"Reports[{i}].ReportFile", report.ReportName);
}

注意事项

  • 若目标接口确实是[FromBody],方式二会导致对象绑定失败,必须使用方式一。
  • HttpClient实例建议复用,避免频繁创建销毁(可通过依赖注入管理)。
  • URL必须补充http://或https://,否则Uri初始化会报错。

内容的提问来源于stack exchange,提问作者abujafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:20:23