private async Task <string> ProcessResponseMessageAsStringAsync(HttpResponseMessage responseMessage, string url, string parameters, ContentTypeEnum contentType)
        {
            if (responseMessage.StatusCode == HttpStatusCode.NoContent)
            {
                return(default(string));
            }

            var responseString = await responseMessage.Content.ReadAsStringAsync();

            if (responseMessage.StatusCode != HttpStatusCode.OK)
            {
                var exception = new CustomWebException($"Request({url}) fault with code = {responseMessage.StatusCode}, data: {parameters}, responseString: {responseString}", responseMessage.StatusCode, responseString);
                if (responseMessage.StatusCode == HttpStatusCode.InternalServerError)
                {
                    exception.Data["ErrorMessage"] = responseString;
                }
                throw exception;
            }

            return(responseString);
        }
        private async Task <T> ProcessResponseMessageAsync <T>(HttpResponseMessage responseMessage, string url, string parameters, ContentTypeEnum contentType)
        {
            if (responseMessage.StatusCode == HttpStatusCode.NoContent)
            {
                return(default(T));
            }

            T   result;
            var response       = responseMessage;
            var responseString = await response.Content?.ReadAsStringAsync();

            if (responseMessage.StatusCode != HttpStatusCode.OK && responseMessage.StatusCode != HttpStatusCode.Created)
            {
                var exception = new CustomWebException($"Request({url}) fault with code = {responseMessage.StatusCode}, data: {parameters}", responseMessage.StatusCode, responseString);
                if (responseMessage.StatusCode == HttpStatusCode.InternalServerError)
                {
                    exception.Data["ErrorMessage"] = responseString;
                }

                throw exception;
            }

            if (contentType == ContentTypeEnum.ApplicationJson)
            {
                result = JsonConvert.DeserializeObject <T>(responseString, _jsonSerializerSettings);
            }
            else
            {
                using (var stream = new MemoryStream(StringToUTF8ByteArray(responseString)))
                {
                    result = (T) new XmlSerializer(typeof(T)).Deserialize(stream);
                }
            }

            return(result);
        }