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

如何将返回格式为application/pdf的REST响应保存为本地PDF文件

RestSharp请求PDF并本地存储的实现方法

首先修正你现有代码的错误配置:你当前请求的accept头设置为application/json,和接口返回的application/pdf格式不匹配,需要先修改为对应类型,GET请求无需设置content-type头(无请求体时该头无效)。

兼容旧版本RestSharp的实现代码

var client = new RestClient(string.Format(url, ponumber));
var response = client.Get(
    new RestRequest(Method.GET)
        .AddHeader("accept", "application/pdf")
        .AddHeader("authorization", string.Format("Bearer {0}", myToken))
    );

// 校验响应成功后直接将原始字节写入本地文件
if (response.IsSuccessStatusCode)
{
    // 替换为你需要的本地存储路径
    string savePath = @"C:\自定义存储路径\输出文件.pdf";
    File.WriteAllBytes(savePath, response.RawBytes);
}

RestSharp v107+ 新版本更简洁的写法

新版本可以直接调用下载方法,无需手动解析响应:

var client = new RestClient();
var request = new RestRequest(string.Format(url, ponumber), Method.Get)
    .AddHeader("authorization", $"Bearer {myToken}");

// 异步写法,同步场景可替换为DownloadData
byte[] pdfBytes = await client.DownloadDataAsync(request);

string savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), $"采购单_{ponumber}.pdf");
await File.WriteAllBytesAsync(savePath, pdfBytes);

注意事项

  • 不要将响应内容转成字符串处理,PDF是二进制格式,直接使用原始字节数组写入文件即可,转码会导致文件损坏
  • 建议增加响应状态码校验逻辑,避免将接口报错信息写入为无效的PDF文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:09:01