【问题标题】:Cannot download a pdf with RestSharp?无法使用 RestSharp 下载 pdf?
【发布时间】:2018-04-16 10:01:43
【问题描述】:

我一直在努力下载使用 restsharp 在线托管的简单 pdf。我已经玩了一个多小时的代码,得到的只是空对象结果。

使用 GET 可以在 POSTMAN 中轻松下载文件,并且没有设置内容标头,但仍然提供了什么?

以下是我一直在尝试的 noddy 沙盒测试:

[TestFixture]
public class Sandbox
{
    [Test]
    public void Test()
    {
        var uri = "https://www.nlm.nih.gov/mesh/2018/download/2018NewMeShHeadings.pdf";
        var client = new RestClient();
        var request = new RestRequest(uri, Method.GET);
        //request.AddHeader("Content-Type", "application/octet-stream");
        byte[] response = client.DownloadData(request);
        File.WriteAllBytes(@"C:\temp\1.pdf", response);
    }
}

更新Return a Stream

        var baseUri = "https://www.nlm.nih.gov/mesh/2018/download/";
        var client = new RestClient(baseUri);
        var request = new RestRequest("2018NewMeShHeadings.pdf", Method.GET);
        request.AddHeader("Content-Type", "application/octet-stream");
        var tempFile = Path.GetTempFileName();
        var stream = File.Create(tempFile, 1024, FileOptions.DeleteOnClose);
        request.ResponseWriter = responseStream => responseStream.CopyTo(stream);
        var response = client.DownloadData(request);

流现在填充了下载的数据。

【问题讨论】:

标签: c# .net pdf download restsharp


【解决方案1】:

试试这个:

    var uri = "https://www.nlm.nih.gov/mesh/2018/download/";
    var client = new RestClient(uri);
    var request = new RestRequest("2018NewMeShHeadings.pdf", Method.GET);
    //request.AddHeader("Content-Type", "application/octet-stream");
    byte[] response = client.DownloadData(request);

【讨论】:

  • 这行得通 - 那么添加标题有什么需要或优势吗?
  • 如何返回响应流?我又得到空值了。
  • 返回哪里? “再次为空”是什么意思?你说它有效。发生了什么变化?
  • 你要么使用 DowloadData 要么使用流。
  • 我已经更新了我上面的答案 - 它现在包含一个从 API 调用 (WebApi) 返回的流。您是直接从 DownloadData 返回 byte[] 还是返回上面更新代码中所示的流?
猜你喜欢
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多