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

C#中HttpClient传图片与JSON报400错误,Fiddler请求正常求助

解决C# MultipartFormDataContent上传JSON+图片返回400 Bad Request的问题

我帮你找到了问题的根源!你的Fiddler请求和C#代码有两处关键不匹配的地方,导致服务器返回400错误,咱们一步步修正:

1. 图片字段的Name参数完全不符

看你Fiddler里的请求,图片对应的form-data字段名是"fieldNameHere",但你的C#代码里添加图片内容时,把第二个参数(也就是form-data的name属性)写成了"image/jpeg"——这完全不是服务器期望的字段名,这是导致400的核心原因!

2. Boundary格式建议统一(次要但能避免潜在问题)

虽然.NET会自动处理boundary的前缀,但手动指定时,建议和Fiddler用的WebKit风格保持一致(比如用十六进制的Ticks值),这样能减少不必要的格式差异。

修正后的完整代码

var boundary = "----WebKitFormBoundary" + DateTime.Now.Ticks.ToString("x"); // 贴近WebKit的boundary格式
MultipartFormDataContent form = new MultipartFormDataContent(boundary);

// 添加JSON部分:字段名和Fiddler里的"application/json"保持一致
StringContent jsonContent = new StringContent(bodyJson);
jsonContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
form.Add(jsonContent, "application/json");

// 添加图片部分:修正字段名为"fieldNameHere",文件名也和Fiddler里的"1111.jpg"对齐
var imageContent = new ByteArrayContent(image);
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
form.Add(imageContent, "fieldNameHere", "1111.jpg");

// 这里建议用await替代.Result,避免UI线程死锁的问题
var response = await _httpClient.PostAsync(url, form);
response.EnsureSuccessStatusCode(); // 可以抛出异常快速定位问题

额外调试建议

  • 用Fiddler抓一下C#代码发出的请求,和你成功的Fiddler请求逐行对比,确认字段名、boundary、内容格式完全一致。
  • 检查bodyJson字符串是否和Fiddler里的JSON完全相同,有没有多余的转义字符或者语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:28:02