How to GET data from an URL and save it into a file in binary in C#.NET without the encoding mess?

前端 未结 3 768
悲&欢浪女
悲&欢浪女 2021-02-01 18:51

In C#.NET, I want to fetch data from an URL and save it to a file in binary.

Using HttpWebRequest/Streamreader to read into a string and saving using StreamWriter works

相关标签:
3条回答
  • 2021-02-01 19:21

    Just don't use any StreamReader or TextWriter. Save into a file with a raw FileStream.

    String url = ...;
    HttpWebRequest  request  = (HttpWebRequest) WebRequest.Create(url);
    
    // execute the request
    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
    
    // we will read data via the response stream
    Stream ReceiveStream = response.GetResponseStream();
    
    string filename = ...;
    
    byte[] buffer = new byte[1024];
    FileStream outFile = new FileStream(filename, FileMode.Create);
    
    int bytesRead;
    while((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
        outFile.Write(buffer, 0, bytesRead);
    
    // Or using statement instead
    outFile.Close()
    
    0 讨论(0)
  • 2021-02-01 19:32

    Minimalist answer:

    using (WebClient client = new WebClient()) {
        client.DownloadFile(url, filePath);
    }
    

    Or in PowerShell (suggested in an anonymous edit):

    [System.Net.WebClient]::WebClient
    $client = New-Object System.Net.WebClient
    $client.DownloadFile($URL, $Filename)
    
    0 讨论(0)
  • 2021-02-01 19:37

    This is what I use:

    sUrl = "http://your.com/xml.file.xml";
    rssReader = new XmlTextReader(sUrl.ToString());
    rssDoc = new XmlDocument();
    
    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sUrl);
    
    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
    StreamReader objReader = new StreamReader(objStream, Encoding.UTF8);
    WebResponse wr = wrGETURL.GetResponse();
    Stream receiveStream = wr.GetResponseStream();
    StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
    string content = reader.ReadToEnd();
    XmlDocument content2 = new XmlDocument();
    
    content2.LoadXml(content);
    content2.Save("direct.xml");
    
    0 讨论(0)
提交回复
热议问题