internal static async Task <HttpRequestResult <TSchema> > ExecuteGetAsync <TSchema>(IParser <TSchema> parser, Uri uri, IDictionary <string, string> headers = null) where TSchema : SchemaBase { var settings = new HttpRequestSettings() { RequestedUri = uri }; if (headers != null && headers.Count > 0) { foreach (var item in headers) { settings.Headers[item.Key] = item.Value; } } HttpRequestResult httpResult = await DownloadAsync(settings); HttpRequestResult <TSchema> result; result = new HttpRequestResult <TSchema>(httpResult); if (httpResult.Success) { var items = await parser.ParseAsync(httpResult.Result); if (items == null) { items = new TSchema[0]; } result.Items = items; } return(result); }
internal static async Task <HttpRequestResult> DownloadAsync(HttpRequestSettings settings) { var result = new HttpRequestResult(); HttpResponseMessage response = await GetResponseMessage(settings); result.StatusCode = response.StatusCode; FixInvalidCharset(response); var content = await response.Content.ReadAsStringAsync(); result.Result = content; return(result); }
private static async Task <HttpResponseMessage> GetResponseMessage(HttpRequestSettings settings) { var filter = new HttpBaseProtocolFilter(); filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent; var httpClient = new HttpClient(filter); AddRequestHeaders(httpClient, settings); HttpResponseMessage response = await httpClient.GetAsync(settings.RequestedUri); return(response); }
private static void AddRequestHeaders(HttpClient httpClient, HttpRequestSettings settings) { if (!string.IsNullOrEmpty(settings.UserAgent)) { httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(settings.UserAgent); } if (settings.Headers != null) { foreach (var customHeaderName in settings.Headers.AllKeys) { if (!String.IsNullOrEmpty(settings.Headers[customHeaderName])) { httpClient.DefaultRequestHeaders.Add(customHeaderName, settings.Headers[customHeaderName]); } } } }
internal static async Task <HttpRequestResult> DownloadAsync(HttpRequestSettings settings) { var result = new HttpRequestResult(); var filter = new HttpBaseProtocolFilter(); filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent; var httpClient = new HttpClient(filter); AddRequestHeaders(httpClient, settings); HttpResponseMessage response = await httpClient.GetAsync(settings.RequestedUri); result.StatusCode = response.StatusCode; FixInvalidCharset(response); result.Result = await response.Content.ReadAsStringAsync(); return(result); }
internal static async Task<HttpRequestResult> DownloadAsync(HttpRequestSettings settings) { var result = new HttpRequestResult(); var filter = new HttpBaseProtocolFilter(); filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent; var httpClient = new HttpClient(filter); if (!string.IsNullOrEmpty(settings.UserAgent)) { httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(settings.UserAgent); } HttpResponseMessage response = await httpClient.GetAsync(settings.RequestedUri); result.StatusCode = response.StatusCode; FixInvalidCharset(response); result.Result = await response.Content.ReadAsStringAsync(); return result; }
private static void AddRequestHeaders(HttpClient httpClient, HttpRequestSettings settings) { if (!string.IsNullOrEmpty(settings.UserAgent)) { httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(settings.UserAgent); } if (settings.Headers != null) { foreach (var customHeaderName in settings.Headers.AllKeys) { if (!String.IsNullOrEmpty(settings.Headers[customHeaderName])) { if (customHeaderName.ToLower() == "user-agent") { settings.Headers[customHeaderName] += $" {GetWASSufix()}"; } httpClient.DefaultRequestHeaders[customHeaderName] = settings.Headers[customHeaderName]; } } } }
private static async Task <HttpResponseMessage> GetResponseMessage(HttpRequestSettings settings) { #if UWP var filter = new HttpBaseProtocolFilter(); filter.CacheControl.ReadBehavior = HttpCacheReadBehavior.MostRecent; var httpClient = new HttpClient(filter); #else HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; //Response.Cache.SetCacheability(HttpCacheability.NoCache); var httpClient = new HttpClient(handler); httpClient.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue() { NoCache = true }; #endif AddRequestHeaders(httpClient, settings); HttpResponseMessage response = await httpClient.GetAsync(settings.RequestedUri); return(response); }