public T Request <T>(string url, string method = Get, T data = null, IAuthSerializer auth = null) where T : class { string response; var json = new JsonParser(); using (var client = new WebClient()) { client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.Encoding = Encoding.UTF8; try { if (auth != null) { Auth(client, auth); } if (method == Post) { var param = json.ParseObjToStr(data); response = client.UploadString(url, param); } else { client.QueryString = SetParameters(data); response = client.DownloadString(url); } } catch (WebException ex) { dynamic servResp = ex.Response; if (ex.Response == null) { response = "{\"detail\":[\"Невозможно подключиться к серверу\"]}"; } else { response = "{\"detail\":[\"Статус запроса " + servResp.StatusCode + "\"]}"; } } } return(json.ParseStrToObj <T>(response)); }
private void Auth(WebClient client, IAuthSerializer auth) { var bytes = Encoding.UTF8.GetBytes(auth.username + ":" + auth.password); client.Headers.Add("Authorization", $"Basic {Convert.ToBase64String(bytes)}"); }