2016-11-04 7 views
0

と私はVimeoのAPIにファイルをアップロードしていますし、ドキュメントは、私は、このヘッダと空のPUTリクエストを送信することにより、アップロードの進行状況を確認したい:設定範囲ヘッダーへ*/* 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); 
} 

どのようにしてこのリクエストに必要な形式で範囲ヘッダーを追加しますか?

編集:

私はまた、以下のようにそれをやってみましたが、どのように私は範囲に*を追加すると、それが長いだけを受け入れますか?

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

編集:

私はこのようにそれを追加する必要があると思う:

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();