応答のデバッグ図; HTTPダウンロード何か、にWebResponse応答= request.GetResponse()によって示されるように
ContentLength 0のContent-レンジビデオが、値の結果は、バイト0をダウンロードされます
改訂コード:
パブリック 静的 INT GetTotalSize(文字列URL) { HttpWebRequestの要求 = (HttpWebRequestの)HttpWebRequest.Create(URL)。 request.CookieContainer = BaseService.CookiesContainer。 WebResponse応答 = request.GetResponse()。 INT LEN =でInt32.Parse(response.Headers [ " コンテンツレンジ" ] .ToString()スプリット(新しい CHAR [] { ' / ' })[ 1 ])。 返すのlen; } パブリック 静的 バイト [] SendRangeGetRequest(文字列のURL) { 試み { INT LEN = GetTotalSize(URL); HttpWebRequestの要求 = (HttpWebRequestの)WebRequest.Create(URL); request.methodは = " GET " ; request.AddRange(" バイト"、0、LEN); // これは、それを追加するためのキーである、ん。ContentLengthの応答に値が IF(CookiesContainer == NULL ) { CookiesContainer =新しいCookieContainer(); } request.CookieContainer = CookiesContainer。 // 启用クッキー HttpWebResponseの応答 = (HttpWebResponseの)request.GetResponse(); ストリームresponse_stream = response.GetResponseStream()。 int型のカウント数=(int型)response.ContentLength。 int型 =オフセット0 ; バイト [] BUF = 新しい バイト[カウント]。 一方、(>カウント0) // 读取返回数据 { INT N = response_stream.Read(BUF、オフセット、カウント)。 もし(nは== 0)ブレーク。 カウント - = N; オフセット + = N。 } 戻りBUFと、 } キャッチ { 戻り ヌル。 } }
最後にFile.WriteAllBytes(関数savepath、バイト);あなたがローカルにダウンロードすることができます