public static void ListenerCallback(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; // Call EndGetContext to complete the asynchronous operation. HttpListenerContext context = listener.EndGetContext(result); HttpListenerRequest request = context.Request; // Obtain a response object. HttpListenerResponse response = context.Response; // Construct a response. string responseString = ""; if (request.HttpMethod == "POST") { System.IO.Stream body = request.InputStream; System.IO.StreamReader reader = new System.IO.StreamReader(body, Encoding.UTF8); string rec = reader.ReadToEnd(); try { string curr_path = Directory.GetCurrentDirectory(); SqlMaintenance.Connect(DB_NAME); string sql = String.Format("INSERT INTO t_data (post_data, datetime) VALUES ('{0}', '{1}')", rec, DateTime.Now); SqlMaintenance.ExCommand(sql); SqlMaintenance.Close(); response.StatusCode = 200; var log = File.Open(LOG_FILE, FileMode.Append, FileAccess.Write); byte[] log_rec = System.Text.Encoding.GetEncoding(1251).GetBytes(String.Format("[{0}] Получено сообщение {1}{2}", DateTime.Now, rec, Environment.NewLine)); log.Write(log_rec, 0, log_rec.Length); log.Close(); } catch (Exception ex) { SqlMaintenance.Close(); var log = File.Open(LOG_FILE, FileMode.Append, FileAccess.Write); byte[] log_rec = System.Text.Encoding.GetEncoding(1251).GetBytes(String.Format("[{0}] ОШИБКА В ПОЛУЧЕНИИ {1}{2}", DateTime.Now, ex, Environment.NewLine)); log.Write(log_rec, 0, log_rec.Length); log.Close(); response.StatusCode = 500; } responseString = "1"; response.ContentType = "text/plain"; response.Headers.Add("Date", String.Empty); response.ContentEncoding = request.ContentEncoding; byte[] buffer = System.Text.Encoding.GetEncoding(1251).GetBytes(responseString); response.ContentLength64 = buffer.Length; Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); response.Close(); } if (request.HttpMethod == "GET") { responseString = "<html><head></head><body><h1>VTI Discount SERVICE</h1>" + "<p>normal load</p>" + "<p>its works!</p>" + "</body></html>"; response.ContentType = "text/html"; response.StatusCode = 200; response.Headers.Add("Date", String.Empty); response.ContentEncoding = request.ContentEncoding; byte[] buffer = System.Text.Encoding.GetEncoding(1251).GetBytes(responseString); response.ContentLength64 = buffer.Length; Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); response.Close(); } }
public static void Post(object obj, ElapsedEventArgs e) { try { var appSettings = System.Configuration.ConfigurationSettings.AppSettings; string server = "http://77.243.11.250:1024/"; try { if (appSettings["discountServerAddress"] != null) { server = appSettings["discountServerAddress"]; } } catch { server = "http://77.243.11.250:1024/"; } SqlMaintenance.Connect(DB_NAME); string sql = "SELECT * FROM t_data"; var reader = SqlMaintenance.ExCommandResult(sql); string post_data; string date; List <Dictionary <String, String> > data_ar = new List <Dictionary <String, String> >(); foreach (DbDataRecord record in reader) { Dictionary <String, String> rec = new Dictionary <String, String>(); post_data = record["post_data"].ToString(); date = record["datetime"].ToString(); post_data += "&datetime=" + date; post_data += "&vtikeeper=token"; rec.Add("post", post_data); rec.Add("id", record["id"].ToString()); data_ar.Add(rec); } reader.Close(); SqlMaintenance.Close(); foreach (var record in data_ar) { var hcon = new StringContent(record["post"]); hcon.Headers.Clear(); hcon.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var response = client.PostAsync(server + "api/cards/vti_keeper/", hcon).Result; HttpStatusCode status = response.StatusCode; if (status == HttpStatusCode.OK) { SqlMaintenance.Connect(DB_NAME); sql = "DELETE FROM t_data WHERE id=" + record["id"]; SqlMaintenance.ExCommand(sql); SqlMaintenance.Close(); var log = File.Open(LOG_FILE, FileMode.Append, FileAccess.Write); byte[] log_rec = System.Text.Encoding.GetEncoding(1251).GetBytes(String.Format("[{0}] Отправка на сервер {1}{2}", DateTime.Now, record["post"], Environment.NewLine)); log.Write(log_rec, 0, log_rec.Length); log.Close(); } } } catch (Exception ex) { SqlMaintenance.Close(); var log = File.Open(LOG_FILE, FileMode.Append, FileAccess.Write); byte[] log_rec = System.Text.Encoding.GetEncoding(1251).GetBytes(String.Format("[{0}] ОШИБКА В ОТПРАВКЕ {1}{2}", DateTime.Now, ex, Environment.NewLine)); log.Write(log_rec, 0, log_rec.Length); log.Close(); } }