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

将RestSharp POST请求转.NET HttpClient时遇格式错误求助

解决HttpClient添加Content-Disposition头时的格式错误问题

你遇到的The format of value 'filename="translations.html"' is invalid错误,核心原因是直接用字符串添加Content-Disposition头不符合HTTP规范的格式要求。RestSharp在处理这类头时做了宽松兼容,但HttpClient会严格校验头的格式,所以直接传入字符串会触发校验失败。

正确的解决方法

Content-Disposition是一个带参数的复合HTTP头,不能直接通过Add方法传入字符串,应该使用.NET提供的ContentDispositionHeaderValue类来构造,这样能保证格式完全符合标准。

修正后的代码如下:

string previewMarkup = "<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"utf-8\">\r\n <title>My page</title>\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n</head>\r\n<body>\r\n\t<h1>My page</h1>\r\n\t<p>This is a paragraph<br />That needs to be translated</p>\r\n</body>\r\n</html>";
var targetLangs = new { targetLangs = new[] { "da", "de", "de-AT", "de-BE" } };
string targetLanguagesParamJson = JsonConvert.SerializeObject(targetLangs);

// 初始化内容,先指定HTML编码
HttpContent httpContent = new StringContent(previewMarkup, Encoding.UTF8, MediaTypeNames.Text.Html);

// 用ContentDispositionHeaderValue正确构造文件头
httpContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
    FileName = "translation.html"
};

// 添加Memsource自定义头
httpContent.Headers.Add("Memsource", targetLanguagesParamJson);
// 覆盖内容类型为octet-stream
httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Octet);

// 发送请求
HttpResponseMessage httpResponseMessage = await _httpClient.PostAsync(
    "https://cloud.memsource.com/web/api2/v1/projects/<myProjectId>/jobs?token=<myAuthToken>", 
    httpContent, 
    cancellationToken);

关键说明

  1. Content-Disposition的正确构造:ContentDispositionHeaderValue会自动处理头的格式,包括引号和参数分隔,避免手动拼接字符串带来的格式错误。这里指定的attachment是标准的disposition类型,符合文件上传的场景,Memsource能正确识别。
  2. 内容类型的调整:先通过StringContent指定UTF-8编码的HTML类型,再覆盖为application/octet-stream,和原RestSharp请求的逻辑保持一致。
  3. 自定义头的兼容性:Memsource头的JSON序列化逻辑不需要修改,JsonConvert的默认序列化结果能满足Memsource的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:02:32