using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography.X509Certificates; using System.IO; using System.Net; using System.Net.Sockets; using System.Xml; // config file using System.Runtime.InteropServices; // dll imports using System.Drawing.Drawing2D; using log4net; using System.Reflection; using System.Windows.Forms; namespace ArdupilotMega { public class Common { private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public static bool getFilefromNet(string url, string saveto) { try { // this is for mono to a ssl server //ServicePointManager.CertificatePolicy = new NoCheckCertificatePolicy(); ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; }); // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(url); request.Timeout = 10000; // Set the Method property of the request to POST. request.Method = "GET"; // Get the response. WebResponse response = request.GetResponse(); // Display the status. log.Info(((HttpWebResponse)response).StatusDescription); if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) return false; // Get the stream containing content returned by the server. Stream dataStream = response.GetResponseStream(); long bytes = response.ContentLength; long contlen = bytes; byte[] buf1 = new byte[1024]; FileStream fs = new FileStream(saveto + ".new", FileMode.Create); DateTime dt = DateTime.Now; while (dataStream.CanRead && bytes > 0) { Application.DoEvents(); log.Debug(saveto + " " + bytes); int len = dataStream.Read(buf1, 0, buf1.Length); bytes -= len; fs.Write(buf1, 0, len); } fs.Close(); dataStream.Close(); response.Close(); File.Delete(saveto); File.Move(saveto + ".new", saveto); return true; } catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; } } } }