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

时间:2012-04-04 07:27:12

标签: c# chunked-encoding

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

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

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

当我运行程序时,出现以下错误:

  

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

如果服务器包含Transfer-Encoding:chunked header?

,如何下载文件

1 个答案:

答案 0 :(得分:4)

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

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

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

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

您将在response.GetResponseStream()

中将该文件作为流获取

归功于this

的作者