从RestRequest获取zip文件



对于我使用RestSharp的REST调用,我必须调用一个服务,该服务必须返回一个zip文件,然后我将其保存在文件系统上

public bool DownloadZip(int id)
{
while (true)
{

var request = new RestRequest("download/zip", DataFormat.Json);
request.AddHeader("authorization", _token);
request.AddHeader("ID", _id.ToString());
request.AddQueryParameter("id", id.ToString());
var response =  new RestClient(url).Get(request);
response.ContentType = "application/zip";
_logFile.Debug($"downloaded result {id}: {response.IsSuccessful} {response.StatusCode}");
if (response.IsSuccessful && !string.IsNullOrWhiteSpace(response.Content))
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(response.Content)))
{
using (var zip = File.OpenWrite(path: @"C:temptemp.zip"))
{
zip.CopyTo(stream);
}
}
return true;
}
if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
_logFile.Warn($"Download Unauthorized {id}: {response.IsSuccessful} {response.StatusCode} {response.Content}");
_authToken = null;
}
else
{
_logFile.Error($"Download {id}: {response.IsSuccessful} {response.StatusCode} {response.Content}");
throw new Exception("DownloadZip Failed");
}
}
}

代码行";CCD_ 1";返回";流不支持读取";作为错误。是否有任何设置可以确保它不会返回错误?在测试对Postman的调用时,我注意到在响应标头中,我有Content Disposition,我可以回到文件名吗?

使用RestSharp 107,您可以使用

var stream = await client.DownloadStreamAsync(request);

它会给你一个流,你可以用它做任何你想做的事。

最新更新