C#使用WebClient下载分块编码内容

edd*_*yuk 7 c# chunked-encoding

我写了一个客户端应用程序,假设从Web服务器下载文件,非常简单:

using (WebClient webClient = new WebClient())
{
    webClient.DownloadFile("http://localhost/audiotest/audio.wav", 
                           @"C:\audio.wav");
}
Run Code Online (Sandbox Code Playgroud)

该网站(音频文件位于:http://localhost/audiotest/audio.wav)具有标题Transfer-Encoding:chunked

当我运行该程序时,我收到以下错误:

服务器提交了协议违规.Section = ResponseBody Detail =响应块格式无效

当服务器包含Transfer-Encoding:chunked header时,如何下载文件?

ZeN*_*eNo 4

我还没有尝试过,但这可能有效:

如果您强制发送 Http 1.0 而不是 Http 1.1 的请求,则服务器将使用指定 Content-Length 的 HTTP 标头进行回复

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost/audiotest/audio.wav");
wr.ProtocolVersion = Version.Parse("1.0"); 

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

您将获得文件作为流response.GetResponseStream()

一切归功于本文作者