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)); }