public string Consume(string url, string template, string method = "GET", string postParams = null, IAuthorization auth = null) { var requestMessage = new HttpRequestMessage() { Method = method?.ToLower() == "post" ? HttpMethod.Post : HttpMethod.Get, RequestUri = new Uri(url), }; if (postParams != null) { requestMessage.Content = new StringContent(postParams, Encoding.UTF8, "application/json"); requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); } if (auth != null) { auth.Apply(requestMessage); } Logger.LogRequest(requestMessage.ToString() + " Body: " + requestMessage.Content?.ReadAsStringAsync().Result); using (var client = new HttpClient()) { var response = client.SendAsync(requestMessage).Result; Logger.LogResponse(requestMessage.RequestUri.ToString() + " " + response.ToString() + Environment.NewLine + "Body: " + response.Content.ReadAsStringAsync().Result); var statusCode = response.StatusCode; response.EnsureSuccessStatusCode(); var media = response.Content.Headers.ContentType.MediaType; var stream = response.Content.ReadAsStreamAsync().Result; var payload = string.Empty; using (var reader = new StreamReader(stream)) { payload = reader.ReadToEnd(); } if (media.Contains("xml")) { payload = XmlToJson.Convert(payload); } var parser = new JsonObjectParser(); return(parser.Parse(payload, template)); } }