没有获得Range标头

时间:2016-11-07 13:38:22

标签: http request google-drive-api http-range

我正在尝试从谷歌驱动器恢复上传,当我关闭连接时,我有文件的ID我在互联网再次连接后进行此会话:

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");
            }

        }

我没有得到Range标头,为什么会这样?

1 个答案:

答案 0 :(得分:1)

Content-Range表示原始实体的哪个范围包含在请求(如PUT请求)或206部分响应的正文中。 {em>客户端而不是服务器设置Range以请求子范围。我假设您正在与之交谈的服务器不会响应上传的块,因此Content-Range(在任何情况下都不会Range)将不会作为响应标头出现。

在您的代码段中,Content-Range缺少实际的上传范围(请参阅updated HTTP RFC)。它必须具有以下形式:

Content-Range: bytes 42-1233/1234

表示:上传总大小为1234字节的实体的字节42-1233。

或者当完整长度未知时:

 Content-Range: bytes 42-1233/*

因此,请删除Range标题的检查并指定完整的上传范围,您应该没问题。