Je télécharger un fichier à l'API Vimeo et les docs me donnent envie de vérifier la progression du téléchargement en envoyant une demande de vente vide avec cet en-tête:Set tête de gamme pour */* avec HttpClient
Content-Range: bytes */*
Leur L'API répond alors avec l'en-tête de plage qui indique la quantité de fichier téléchargée. (https://developer.vimeo.com/api/upload/videos#verify-the-upload)
J'ai une boucle while qui s'exécute pendant le chargement mais je n'arrive pas à comprendre comment ajouter l'en-tête à la requête PUT. uploadClient
est la même instance HttpClient
avec laquelle je télécharge le fichier.
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);
}
Comment ajouter l'en-tête de plage dans le format qu'ils veulent à cette demande?
Edit:
J'ai essayé de le faire comme ci-dessous aussi, mais comment puis-je ajouter le *
à la plage et il accepte seulement une longue?
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:
Je pense que je dois l'ajouter comme ceci:
progressRequestMessage.Headers.Add("Range", "bytes */*");
Cela me donne une exception valeur invalide donc je pense qu'il peut y avoir une autre façon d'écrire bytes */*
que fonctionne mais ne peut pas le comprendre.