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

使用RestSharp ExecuteAsync获取octet-stream文件内容异常的排查解决

RestSharp 111.2.0 文件下载内容异常问题解决

我使用RestSharp 111.2.0版本,通过以下代码实现文件获取:

internal async Task<byte[]> GetFileAsync(int documentId)
{
    RestRequest request = new RestRequest($"{_apiPath}/document-files/{documentId}", Method.Get);
    request.AddHeader("Accept", "application/octet-stream");

    RestResponse response = await mRestClient.ExecuteAsync(request).ConfigureAwait(true);
    ErrorHandling(response);

    return response.RawBytes;
}

这段代码逻辑简单,通过ErrorHandling方法完成日志记录等处理,但下载文件时,返回的Content和RawBytes中包含multipart相关头信息,导致文件内容"损坏"。例如返回的PDF内容如下:

--69d36367-8ab0-4b7c-a718-668f7542e836
Content-Type: application/octet-stream
Content-Disposition: form-data; name=""; filename="MG Test2.pdf"
 
%PDF-1.7
...
%%EOF
 
--69d36367-8ab0-4b7c-a718-668f7542e836--

实际有效内容应为从%PDF-1.7开始到%%EOF结束的部分。手动截取内容并非合理方案,改用DownloadDataAsync等方法又需要重构错误处理逻辑,成本较高。另外,必须手动添加Accept: application/octet-stream头,否则会触发406错误。

后续排查发现问题根源在上传环节:之前使用Request.AddFile()方法上传文件的方式有误,改用Request.AddParameter()后,文件获取异常的问题彻底解决。


内容的提问来源于stack exchange,提问作者Marcel Grüger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:52:49