其他分享
首页 > 其他分享> > 如何在.NET Core中逐行下载文件?

如何在.NET Core中逐行下载文件?

作者:互联网

我试图使用HttpWebResponse.GetResponse();但这不是.NET核心的一部分,我无法确定其他任何内容.

到目前为止,我只有这个,但这会下载整个文件

string first_line(string url)
{
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MyClient", "1.0"));
    var otp = httpClient.GetStringAsync(url);

    return imaginary_first_line;
}

我只想下载第一行而不下载其余文件.

解决方法:

解决方案是使用Range标头.它表示我们只对文件部分感兴趣的服务器.这是一个仅下载50个字节的示例:

using (var client = new HttpClient())
{
   var request = new HttpRequestMessage(HttpMethod.Get, url);
   //Let's read only 50 bytes
   request.Headers.Range = new RangeHeaderValue(0, 50);

   using (var response = await client.SendAsync(request))
      using (var stream= await response.Content.ReadAsStreamAsync())
      {
         //The buffer can store 1000 bytes but only 50 will be send from the server
         var buffer = new byte[1000];
         stream.Read(buffer, 0, 1000);
         //...
      }
}

您可以使用Fiddler来检查服务器是否仅返回50个字节.

您还可以通过以下方式使用HttpWebRequest类:

var request = (HttpWebRequest)WebRequest.Create(url);
request.Headers[HttpRequestHeader.Range] = "bytes=0-50";

var response = await request.GetResponseAsync();
//...

结果应该是相同的.

标签:net-core,c
来源: https://codeday.me/bug/20191112/2024246.html