using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; namespace POSV.Utils { public class RequestUtils { public static string Post(string url, SortedList parameters) { var sb = new StringBuilder(); foreach (var item in parameters) { if (sb.ToString().Length != 0) { sb.Append("&"); } var key = Uri.EscapeDataString(item.Key).Replace("%20", "+"); var value = Uri.EscapeDataString(item.Value).Replace("%20", "+"); sb.Append(key + "=" + value); } MemoryStream request = RequestUtils.Post(url, sb.ToString()); return System.Text.Encoding.UTF8.GetString(request.ToArray()); } public static MemoryStream Post(string url, string data) { return Post(url, data, Encoding.UTF8); } public static MemoryStream Post(string url, string data, Encoding encoding) { return Post(url, data, 10000, Encoding.UTF8); } public static MemoryStream Post(string url, string data, int timeout, Encoding encoding) { HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); webRequest.ContentType = "application/json"; webRequest.Method = "POST"; webRequest.Timeout = timeout; WriteRequestStream(ref webRequest, data, encoding); return GetResponseStream(ref webRequest); } private static void WriteRequestStream(ref HttpWebRequest webRequest, string data, Encoding encoding) { using (Stream requestStream = webRequest.GetRequestStream()) { byte[] bArray = encoding.GetBytes(data); requestStream.Write(bArray, 0, bArray.Length); requestStream.Close(); } } private static MemoryStream GetResponseStream(ref HttpWebRequest webRequest) { using (WebResponse webResponse = webRequest.GetResponse()) { Stream stream = webResponse.GetResponseStream(); MemoryStream memoryStream = new MemoryStream(); byte[] bs = new byte[256]; for (int j = stream.Read(bs, 0, (int)bs.Length); j > 0; j = stream.Read(bs, 0, (int)bs.Length)) { memoryStream.Write(bs, 0, j); } stream.Close(); memoryStream.Position = (long)0; return memoryStream; } } } }