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

RestSharp构造视频上传请求如何匹配Postman的成功请求?

如何用RestSharp构造与Postman一致的视频上传请求

当然可以!你遇到的问题本质是RestSharp的默认配置和Postman的请求参数不匹配,咱们针对几个差异点逐一调整就能搞定:

关键差异点与修复方案

先明确Postman和当前RestSharp请求的核心差异:

  • Accept头:Postman是*/*,RestSharp默认是application/json
  • Content-Disposition的name:Postman为空,当前RestSharp用了文件名作为name值
  • 文件Content-Type:Postman是video/mp4,RestSharp默认是application/octet-stream

1. 设置正确的Accept头

直接通过AddHeader方法覆盖RestSharp的默认Accept值:

restRequest.AddHeader("Accept", "*/*");

2. 让Content-Disposition的name为空

RestSharp的AddFile方法第一个参数就是对应Content-Disposition里的name字段,传入空字符串即可实现和Postman一致的配置:

// 第一个参数传空字符串,对应name=""
restRequest.AddFile("", request.FullPath, "video/mp4");

3. 指定文件的Content-Type为video/mp4

上面的AddFile重载已经包含了第三个参数,用来指定文件的Content-Type,这样就能覆盖默认的application/octet-stream。

完整代码示例

把这些调整整合到一起,最终代码如下:

var restRequest = new RestRequest("你的API端点路径", Method.Post);
// 确保启用multipart/form-data格式
restRequest.AlwaysMultipartFormData = true;
// 设置Accept头为*/*
restRequest.AddHeader("Accept", "*/*");
// 添加文件:name为空,指定video/mp4类型
restRequest.AddFile("", request.FullPath, "video/mp4");

// 执行请求
var client = new RestClient("你的API基础URL");
var response = await client.ExecuteAsync(restRequest);

额外验证(可选)

如果需要确认请求结构是否完全匹配,可以开启RestSharp的日志功能,查看最终生成的请求头和体:

client.Options.MaxTimeout = 10000;
client.ThrowOnAnyError = true;
// 启用请求日志输出
client.OnBeforeRequest = request =>
{
    Console.WriteLine($"请求方法: {request.Method}");
    Console.WriteLine($"请求地址: {request.Resource}");
    Console.WriteLine("请求头:");
    foreach (var header in request.Parameters.Where(p => p.Type == ParameterType.HttpHeader))
    {
        Console.WriteLine($"{header.Name}: {header.Value}");
    }
};

这样调整后,RestSharp构造的请求就会和Postman的完全一致,应该能成功调用目标API端点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:04