mirror of https://github.com/ArduPilot/ardupilot
78 lines
2.7 KiB
C#
78 lines
2.7 KiB
C#
|
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; }
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|