On Fri, 2009-04-24 at 14:05 -0700, giancarlogiesa wrote:
> Hello,
> 
> is possible with C# / Mono download a file from an HTTP server ?
> if yes, how ?
> 
> my code is this:
> ------------------------------------
>     private string SocketSendReceive(string url){
>               int i=0;
>               while(i<url.Length && url[i]!='/'){
>                       i++;
>               }
>               string server=url.Substring(0,i);
>               string request = "GET "+url.Substring(i)+" HTTP/1.1\r\nHost: " 
> + server +
> "\r\nConnection: Close\r\n\r\n";
>         Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
>         Byte[] bytesReceived = new Byte[1024];
>         Socket s = ConnectSocket(server, 80);
>         if (s == null){
>             return ("Connection failed");
>               }
>         s.Send(bytesSent, bytesSent.Length, 0);  
>                       
>         int bytes = 0;
>         string page = null;
>         do {
>             bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
>             page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);

You are using ASCII encoding. That's why downloading a Zip file fails.
If you're going to roll your own HTTP download instead of using
HttpWebRequest/WebClient you should check the Content-Type and "decode"
the incoming stream according to the type.

-Gonzalo


_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to