未获取范围 header
Not getting Range header
我正在尝试从 google 驱动器恢复上传,当我关闭连接时我有文件的 ID 我在再次连接互联网后 session 创建了这个文件:
var request = (HttpWebRequest)WebRequest.Create(fileUri);
request.Method = "PUT";
request.ContentLength = 0;
request.Headers.Add("Content-Range", "bytes */" + FileByteArray.Length);
try
{
var response = request.GetResponse();
}
catch (WebException e)
{
fileRange = e.Response.Headers.Get("Range");
}
}
我没有得到范围 header,这是为什么?
Content-Range
指示原始实体的哪个范围包含在请求(如您的 PUT
请求)或 206 部分响应的 body 中。 Range
由 客户端 而不是服务器设置,以便请求 sub-range。我假设您正在与之交谈的服务器不会响应上传的块,因此 Content-Range
(在任何情况下 Range
都不会作为响应出现 header。
在您的代码片段中,缺少 Content-Range
的实际上传范围(参见 updated HTTP RFC)。它必须具有以下形式:
Content-Range: bytes 42-1233/1234
表示:上传总大小为1234字节的实体的第42-1233字节。
或者当完整长度未知时:
Content-Range: bytes 42-1233/*
所以删除 Range
header 的检查并指定完整的上传范围,你应该没问题。
我正在尝试从 google 驱动器恢复上传,当我关闭连接时我有文件的 ID 我在再次连接互联网后 session 创建了这个文件:
var request = (HttpWebRequest)WebRequest.Create(fileUri);
request.Method = "PUT";
request.ContentLength = 0;
request.Headers.Add("Content-Range", "bytes */" + FileByteArray.Length);
try
{
var response = request.GetResponse();
}
catch (WebException e)
{
fileRange = e.Response.Headers.Get("Range");
}
}
我没有得到范围 header,这是为什么?
Content-Range
指示原始实体的哪个范围包含在请求(如您的 PUT
请求)或 206 部分响应的 body 中。 Range
由 客户端 而不是服务器设置,以便请求 sub-range。我假设您正在与之交谈的服务器不会响应上传的块,因此 Content-Range
(在任何情况下 Range
都不会作为响应出现 header。
在您的代码片段中,缺少 Content-Range
的实际上传范围(参见 updated HTTP RFC)。它必须具有以下形式:
Content-Range: bytes 42-1233/1234
表示:上传总大小为1234字节的实体的第42-1233字节。
或者当完整长度未知时:
Content-Range: bytes 42-1233/*
所以删除 Range
header 的检查并指定完整的上传范围,你应该没问题。