【问题标题】:Null response when using RestSharp to download a file使用 RestSharp 下载文件时出现空响应
【发布时间】:2021-04-26 02:29:30
【问题描述】:

我正在尝试更新我的一个应用程序中的 RestSharp 文件下载部分代码。显然.SaveAs() 被贬低了,所以我尝试关注their updated example 来处理文件。但是,我的响应始终为空,并且创建的临时文件似乎没有填充我尝试保存的数据。

这是我目前所拥有的:

        var tempFile = Path.GetTempFileName();
        using var writer = File.OpenWrite(tempFile);

        var client = new RestClient("https://provider-api.spotify.com/v1/analytics");
        var request = new RestRequest("{licensor}/enhanced/tracks/{year}/{month}/{day}", Method.GET);
        request.AddHeader("Authorization", $@"Bearer {token}");
        request.AddUrlSegment("licensor", "licensor_name");
        request.AddUrlSegment("year", 2021);
        request.AddUrlSegment("month", 1);
        request.AddUrlSegment("day", 10);

        var checkResponse = client.Execute<SpotifyTracksResourceModel>(request);

        if (checkResponse.Content == "")
        {
            Console.WriteLine("No data");
        }

        request.ResponseWriter = responseStream =>
        {
            using (responseStream)
            {
                responseStream.CopyTo(writer);
            }
        };
        var response = client.DownloadData(request);

我输入了checkResponse 代码,以确保我实际上正在获取数据,并且我实际上正在获取数据。但正如我所说,一旦到达 var response = ... 行,它就会返回 NULL,并且没有任何内容写入该临时文件。

提前感谢您对此提供的任何帮助!

【问题讨论】:

  • 我相信AddUrlSegment 也已被弃用。你使用的是什么版本的 RedtSharp
  • @Jawad 看起来我使用的是 106.11.7 版

标签: c# .net api restsharp


【解决方案1】:

所以它最终是我需要调整的一些小东西的组合。但最重要的是更新 RestSharp NuGet 包,并关闭 writer FileStream。

    var tempFile = Path.GetTempFileName();
    using var writer = File.OpenWrite(tempFile);

    var client = new RestClient("https://provider-api.spotify.com/v1/analytics");
    var request = new RestRequest("{licensor}/enhanced/tracks/{year}/{month}/{day}", DataFormat.Json)
            .AddUrlSegment("licensor", "licensor_name")
            .AddUrlSegment("year", "2021")
            .AddUrlSegment("month", "1")
            .AddUrlSegment("day", "10");
    
    spotifyRequest.AddHeader("Authorization", $@"Bearer {token}");
    var checkResponse = spotifyClient.Get<SpotifyTracksResourceModel>(spotifyRequest);

    request.ResponseWriter = responseStream =>
    {
        using (responseStream)
        {
            responseStream.CopyTo(writer);
        }
    };
    var response = client.DownloadData(request);
    writer.Close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多