Beispiel #1
0
        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));
            }
        }