2013-08-16 44 views
0

我正在開發Windows Store應用程序,並嘗試爲HttpWebRequest上的範圍標題設置值,但我無法弄清楚如何執行此操作。我嘗試的3種解決方案不起作用(即使它們在msdn文檔中,異常或方法/屬性也不存在)。在Metro App中的HttpWebRequest標題上設置範圍

//Create the request. 
     HttpWebRequest getRequest = WebRequest.Create(download.URI) as HttpWebRequest; 

     // Set the request's method. 
     getRequest.Method = "GET"; 

     //Set the Range'value on header 
     /*(1)*/ getRequest.Headers[HttpRequestHeader.Range] = "bytes="+download.DownloadedBytes+"-"; 
     /*(2)*/ getRequest.Headers.Range = new RangeHeaderValue(download.DownloadedBytes,null); 
     /*(3)*/ getRequest.Headers.AddRange(download.DownloadedBytes); 

我知道HttpWebRequest有一個半棄用的狀態,但我不想使用HttpClient類。當HTTP請求失敗時,我不太高興如何檢索錯誤代碼。

有沒有人有想法?

回答

1

在您最初的頭

getRequest.Headers[HttpRequestHeader.Range] = "bytes="+download.DownloadedBytes+"-"; 

我不知道你的價值是什麼download.DownloadedBytes,但我不相信,字符串將滿足範圍字段標題。該字符串應該是形式「bytes = 500-999」

我還沒有使用HttpWebRequest這個工作,但我可以提供一個示例HttpClient(對不起,我知道你不想切換到這個,但它可能是最好的)

var client = new HttpClient(handler); 
client.DefaultRequestHeaders.Add("range", @"bytes=0-9000"); 
var response = await client.GetAsync(url); 

當然,應該指出的是,並不是所有的web服務器都會尊重範圍標題。祝你好運!

+0

我不再在這個項目上工作了,但是如果我記得,這個例外是關於對方法的一些限制訪問。不幸的是我現在無法測試你的解決方案。但是,對於這個項目,我只是在客戶端和服務器端設置自己的頭文件。無論如何,謝謝你的回答,我會測試你的解決方案(有一天) – Zangdak