2012-04-04 38 views
7

Tôi đã viết một ứng dụng khách là giả sử để tải về một tập tin từ một máy chủ web, rất đơn giản:C# sử dụng WebClient tải chunked nội dung mã hóa

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

Trang web (nơi tập tin âm thanh nằm: http://localhost/audiotest/audio.wav) có tiêu đề Transfer-Encoding: chunked

khi tôi chạy chương trình, tôi nhận được lỗi sau:

The server committed a protocol violation. Section=ResponseBody Detail=Response chunk format is invalid

Làm thế nào tôi có thể tải về các tập tin khi máy chủ chứa Transfer-Encodin g: tiêu đề chunked?

Trả lời

4

Tôi đã không thử nó nhưng điều này có thể làm việc:

Nếu bạn mạnh mẽ gửi một yêu cầu cho Http 1.0 chứ không phải Http 1.1 sau đó máy chủ sẽ trả lời với HTTP Header xác định Content-Length

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

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

Bạn sẽ nhận được các tập tin như suối trong response.GetResponseStream()

Tất cả tín dụng cho tác giả của this

Các vấn đề liên quan