using System; using System.Collections.Generic; using System.IO; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Serialization; namespace Creditcall.ChipDna.Client { public static class ErrorLogger { private static readonly HttpClient httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(10) }; public static async Task SendLogErrorAsync(Dictionary statusResult) { try { if (statusResult == null || statusResult.Count == 0) return; var url = "http://127.0.0.1:9091/logerror"; var wrappedResult = new SerializableKeyValueList(statusResult); var serializer = new XmlSerializer(typeof(SerializableKeyValueList)); var ns = new XmlSerializerNamespaces(); ns.Add(string.Empty, string.Empty); var settings = new XmlWriterSettings { OmitXmlDeclaration = false, Indent = false, Encoding = new UTF8Encoding(false) }; using (var ms = new MemoryStream()) { using (var xw = XmlWriter.Create(ms, settings)) { serializer.Serialize(xw, wrappedResult, ns); } var content = new ByteArrayContent(ms.ToArray()); content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); await httpClient.PostAsync(url, content); } } catch (Exception ex) { Console.WriteLine("SendLogErrorAsync failed: " + ex.Message); } } } }