2016-11-04 4 views
0

Я загрузив файл в API Vimeo и документы хотят, чтобы я проверить ход загрузки, отправив запрос пустых пут с этим заголовком:Установить заголовок диапазона до */* с HttpClient

Content-Range: bytes */* 

Их Затем API отвечает заголовком диапазона, который указывает, какая часть файла загружена. (https://developer.vimeo.com/api/upload/videos#verify-the-upload)

У меня есть цикл while, который выполняется во время загрузки, но я не могу понять, как добавить заголовок в запрос PUT. uploadClient - тот же HttpClient экземпляр, что я загружаю файл.

while(!requestTask.IsCompleted) 
{ 
    var progressRequest = await uploadClient.PutAsync(uploadLink.PathAndQuery, new StringContent("")); 
    var progressResult = await progressRequest.Content.ReadAsStringAsync(); 
    Console.WriteLine("I will parse progress and output here"); 
    await Task.Delay(5000); 
} 

Как добавить заголовок диапазона в формате, который требуется для этого запроса?

Edit:

Я попытался сделать это, как показано ниже также, но как я могу добавить * к диапазону, и принимает только длинный?

while(!requestTask.IsCompleted) 
{ 
    var progressRequestMessage = new HttpRequestMessage(HttpMethod.Put, uploadLink.PathAndQuery); 
    progressRequestMessage.Headers.Range.Ranges.Add(new RangeItemHeaderValue(*, *)); 

    var progressRequest = await uploadClient.SendAsync(progressRequestMessage); 
    var progressResult = await progressRequest.Content.ReadAsStringAsync(); 
    Console.WriteLine("I will parse progress and output here"); 
    await Task.Delay(5000); 
} 

Edit:

Я думаю, что нужно добавить это следующим образом:

progressRequestMessage.Headers.Add("Range", "bytes */*"); 

Это дает мне исключение недопустимое значение, поэтому я думаю, что может быть другой способ, чтобы написать bytes */* что работает, но не может понять это.

ответ

1

На самом деле легко добавить заголовок, просто добавьте его в содержимое тела. Не удалось найти это документально, хотя это было болью.

var bodyContent = new StringContent(""); 
bodyContent.Headers.Add("Content-Range", "bytes */*"); 

var progressRequest = await uploadClient.PutAsync(uploadLink.PathAndQuery, bodyContent); 
var progressResult = await progressRequest.Content.ReadAsStringAsync(); 
Смежные вопросы