如何使用restsharp下载文件

Lea*_*ner 27 c# xml asp.net httpclient restsharp

我有一个URL(来自客户端的实时源的URL),当我在浏览器中点击时返回xml响应.我已将其保存在文本文件中,其大小为8 MB.

现在我的问题是我需要将此响应保存在服务器驱动器上的xml文件中.从那里我将在数据库中插入此.并且需要使用http-client或c#.net 4.5的rest-sharp库使用代码进行请求

我不确定我应该为上述情况做些什么.任何身体都能给我一些建议

Tod*_*ier 33

使用RestSharp,它就在自述文件中:

var client = new RestClient("http://example.com");
client.DownloadData(request).SaveAs(path);
Run Code Online (Sandbox Code Playgroud)

随着HttpClient,它涉及更多.看看这篇博客文章.

另一种选择是Flurl.Http(免责声明:我是作者).它使用HttpClient引擎盖,提供流畅的界面和许多方便的帮助方法,包括:

await "http://example.com".DownloadFileAsync(folderPath, "foo.xml");
Run Code Online (Sandbox Code Playgroud)

NuGet上获取它.

  • @JCarlos:`SaveAs`方法仍在那里.它位于`RestSharp.Extensions`命名空间,`MiscExtensions`类中. (13认同)
  • 太糟糕了 `DownloadData` 没有异步版本 (3认同)

小智 10

似乎SaveAs已经停产.你可以试试这个

var client = new RestClient("http://example.com")    
byte[] response = client.DownloadData(request);
File.WriteAllBytes(SAVE_PATH, response);
Run Code Online (Sandbox Code Playgroud)

  • 见上面的答案评论. (2认同)
  • SaveAs 还在,你必须添加一个 using 语句:`using RestSharp.Extensions;` (2认同)
  • MiscExtensions.SaveAs 在较新版本中已被标记为过时。 (2认同)

Ale*_*r G 7

读取时不要将文件保留在内存中。直接写入磁盘。

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

var client = new RestClient(baseUrl);
var request = new RestRequest("Assets/LargeFile.7z");
request.ResponseWriter = responseStream =>
{
    using (responseStream)
    {
        responseStream.CopyTo(writer);
    }
};
var response = client.DownloadData(request);
Run Code Online (Sandbox Code Playgroud)

从这里复制/sf/answers/4180442731/


Vit*_*aly 6

如果您想要异步版本

var request = new RestRequest("/resource/5", Method.GET);
var client = new RestClient("http://example.com")    
var response = await client.ExecuteTaskAsync(request);
if (response.StatusCode != HttpStatusCode.OK)
            throw new Exception($"Unable to download file");
response.RawBytes.SaveAs(path);
Run Code Online (Sandbox Code Playgroud)