Exemple #1
0
        private static T CallRestApiWithJsonPayload <T>(
            this HttpClient client,
            string requestUri,
            T json,
            Action <string> logger,
            string method)
        {
            AddUserAgent(client);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            LogRequest(
                method,
                client.BaseAddress + requestUri,
                client.DefaultRequestHeaders,
                JsonConvert.SerializeObject(json, Formatting.Indented),
                logger);
            HttpResponseMessage response;

            switch (method.ToUpper())
            {
            case WebRequestMethods.Http.Post: response = client.PostAsJsonAsync(requestUri, json).Result; break;

            case WebRequestMethods.Http.Put: response = client.PutAsJsonAsync(requestUri, json).Result; break;

            default: throw new InvalidOperationException();
            }

            string content = response.EnsureSuccessStatusCode().Content.ReadAsStringAsync().Result;

            LogResponse(
                response.StatusCode.ToString(),
                response.Headers,
                JsonUtilities.TryFormatJson(content),
                logger);

            return(JsonConvert.DeserializeObject <T>(content));
        }