public string GetResponse(string requestUrl, string requestContents) { string requestHash = requestContents.ToSha1Hash(); if (ResponseCache.ContainsKey(requestHash)) { return(ResponseCache.Get(requestHash)); } byte[] bytes = new ASCIIEncoding().GetBytes(requestContents); var webRequest = (HttpWebRequest)WebRequest.Create(requestUrl); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = bytes.Length; Stream requestStream = webRequest.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); WebResponse response = webRequest.GetResponse(); string responseXml; using (Stream stream = response.GetResponseStream()) { if (stream == null) { return(String.Empty); } var reader = new StreamReader(stream); responseXml = reader.ReadToEnd(); } responseXml = RemoveCommasFromDecimalValues(responseXml); ResponseCache.Add(requestHash, responseXml, 30); return(responseXml); }