2012-04-04 9 views
7

Ho scritto un'applicazione client che è supponiamo di scaricare un file da un server web, molto semplice:C# utilizzando WebClient per scaricare Chunked contenuti codificati

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

Il sito (in cui trova file audio: http://localhost/audiotest/audio.wav) ha intestazione Transfer-Encoding: chunked

quando eseguo il programma, ottengo l'errore seguente:

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

Come posso scaricare il file quando il server contiene Transfer-Encodin g: intestazione chunked?

risposta

4

non l'ho provato, ma questo potrebbe funzionare:

Se si invia con forza una richiesta di HTTP 1.0 invece di HTTP 1.1, allora assistente risponderà con intestazione HTTP Content-Length specificando

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

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

Si otterrà il file come flusso in response.GetResponseStream()

Tutto il merito all'autore di this

Problemi correlati