Exemple #1
0
        private static object SendRequest <T>(
            RequestType requestType,
            string requestEndpoint,
            HttpStatusCode expectedStatusCode,
            object body = null,
            ContentTypes contentType = ContentTypes.Json,
            Dictionary <HttpRequestHeader, string> headers = null,
            ContentTypes acceptedContentType = ContentTypes.Json)
        {
            var endpointFinalUrl = $"{Url}{requestEndpoint}"
                                   .AddParametersToUrl(body);
            var request = (HttpWebRequest)WebRequest.Create(endpointFinalUrl);

            request.ApplyStandardHeaders(acceptedContentType);
            request.AddHeaders(headers);
            request.Method = requestType.ToString();

            if (body != null && !body.IfPropertyWithAttributeExists <AddSingleParameterToUrlAttribute>())//todo: avoid parameters to url
            {
                var content = body.ToBytesByContentType(request, contentType);
                using var stream = request.GetRequestStream();
                stream.Write(content, 0, content.Length);
            }

            var response = (HttpWebResponse)request.GetResponse();

            Assert.AreEqual(expectedStatusCode, response.StatusCode,
                            $"Received incorrect status code.");

            var responseString = new StreamReader(response?.GetResponseStream()).ReadToEnd();

            Console.WriteLine($"---Send {request.Method} to {endpointFinalUrl}: \n{responseString}");

            return(responseString.ConvertResponse <T>(acceptedContentType));
        }