using Newtonsoft.Json; using OT.COM.SignalerMessage; using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; namespace JeepConsole { public class CReqestItem { public CRequestMessage Req { get; set; } } public class CReqestPack { public List Reqs { get; set; } public string Token { get; set; } } public class CResponsePack { public List Reps { get; set; } } public class SendWebApiRequest { public string RunEncryptRequest(string i_sURL, CReqestPack i_crm, out string o_sRes) { string sData = JsonConvert.SerializeObject(i_crm); return runRequest(i_sURL, sData, out o_sRes); } protected string runRequest(string i_sURL, string i_sContent, out string o_sRes, [System.Runtime.CompilerServices.CallerLineNumber] int i_nCodeLine = 0, [System.Runtime.CompilerServices.CallerMemberName] string i_sMemberName = "", [System.Runtime.CompilerServices.CallerFilePath] string i_sSourcePath = "") { string sRes = null; Stream dataStream = null; WebResponse response = null; StreamReader reader = null; string sMsg = null; string responseFromServer = null; try { // https://msdn.microsoft.com/zh-tw/library/debx8sh9(v=VS.110).aspx // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create(i_sURL); request.Timeout = 600000; // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. request.UseDefaultCredentials = true; string postData = i_sContent; byte[] byteArray = Encoding.UTF8.GetBytes(postData); // Set the ContentType property of the WebRequest. request.ContentType = "application/json"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. response = request.GetResponse(); // Display the status. // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. reader = new StreamReader(dataStream); // Read the content. responseFromServer = reader.ReadToEnd(); // Display the content. sRes = responseFromServer; } catch (Exception ex) { sMsg = $"{nameof(runRequest)} unknwon exception. i_sURL={i_sURL}, i_sContent={i_sContent}. Call from {i_sMemberName} {i_sSourcePath}({i_nCodeLine})."; sMsg += ex.StackTrace; sMsg += " " + responseFromServer; #if DEBUG System.Diagnostics.Debug.WriteLine(sMsg); #endif } finally { if (null != reader) { reader.Close(); } if (null != response) { response.Close(); } if (null != dataStream) { dataStream.Close(); } } o_sRes = sRes; return sMsg; } } }