HTTPん。ContentLength 0のダウンロードの問題

 応答のデバッグ図; 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、バイト);あなたがローカルにダウンロードすることができます

おすすめ

転載: www.cnblogs.com/lovewuhan/p/10974072.html