【问题标题】:HttpWebRequest or WebRequest - Resume Download ASP.NETHttpWebRequest 或 WebRequest - 继续下载 ASP.NET
【发布时间】:2009-08-26 17:03:49
【问题描述】:

我想知道是否有办法知道服务器是否支持恢复下载功能,如果支持,我如何发送恢复请求?

我正在寻找一种解决方案,让我的 ASP.NET 页面可以从服务器下载到我的服务器,就像今天的“rapidleech”一样​​,但我想检查一下我请求下载的服务器支持恢复功能。

【问题讨论】:

    标签: c# asp.net httpwebrequest webrequest


    【解决方案1】:

    通过使用Range HTTP 标头指定要下载的文件的字节范围来恢复文件。这可以在 .NET 中使用 HttpWebRequest.AddRange 函数完成。

    例如:

    request.AddRange(1000); 
    

    将告诉服务器从文件的第 1000 个字节开始发送。

    如果服务器支持 Range 标头,它将发送 HTTP 状态为 206(部分内容)的内容,而不是正常的 200(OK)。请参阅HTTP Spec

    要在尝试下载之前检查服务器是否支持恢复,请更改HttpWebRequestMethod“HEAD”。如果服务器支持恢复,则返回 206(Partial Content),不支持则返回 200(OK)。

    【讨论】:

    • 那么,如果服务器不支持,它会发送一个正常的 200 吗?
    • 是的。根据 HTTP 规范,如果服务器不支持范围,它将发送一个包含所有内容的正常 200。您还可以在初始下载尝试时检查“Accept-Ranges”标头中指定的服务器,以查看它是否支持发送范围(应该是“字节”或“无”)。此标头不是必需的,因此如果没有“Accept-Ranges”标头,它可能会接受范围。
    【解决方案2】:

    您可以通过Scott Mitchell here 找到有关 Range 特定请求的更多信息

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 2016-09-19
      • 2012-06-21
      • 2012-01-02
      • 1970-01-01
      相关资源
      最近更新 更多