7

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

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

该网站(音频文件所在的位置:http://localhost/audiotest/audio.wav)具有标头 Transfer-Encoding: chunked

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

服务器违反了协议。Section=ResponseBody Detail=响应块格式无效

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

4

1 回答 1

4

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

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

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

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

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

所有功劳归于作者

于 2012-04-04T08:05:57.567 回答