protected virtual async Task <ResponseItem> InternalCrawlAsync(RequestItem requestItem) { var requestMessage = new HttpRequestMessage(new HttpMethod(requestItem.Method), requestItem.Url); AddHeaders(requestMessage.Headers, requestItem.Headers); if (requestItem.Body != null) { requestMessage.Content = new StringContent(requestItem.Body); } var responseItem = new ResponseItem(requestItem); try { var responseMessage = await this.client.SendAsync(requestMessage); responseItem.StatusCode = responseMessage.StatusCode; responseItem.ResponseUrl = responseMessage.RequestMessage.RequestUri.AbsoluteUri; responseItem.Body = await responseMessage.Content.ReadAsStringAsync(); } catch (Exception ex) { responseItem.Exception = ex; } return(responseItem); }
public async Task <ResponseItem[]> CrawlAsync(RequestItem[] items) { if (items == null) { throw new ArgumentNullException(nameof(items)); } if (items.Length == 0) { return(new ResponseItem[0]); } var responseItems = new List <ResponseItem>(); foreach (var item in items) { ResponseItem responseItem; try { RequestItem.EnsureItem(item); responseItem = await this.InternalCrawlAsync(item); } catch (ArgumentNullException ex) { responseItem = new ResponseItem(item) { Exception = ex }; } responseItems.Add(responseItem); } return(responseItems.ToArray()); }
public static void EnsureItem(RequestItem item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } EnsureUrl(item.Url); item.Method = EnsureMethod(item.Method); }
public async Task <ResponseItem> CrawlAsync(RequestItem item) { try { RequestItem.EnsureItem(item); } catch (ArgumentNullException ex) { return(new ResponseItem(item) { Exception = ex }); } return(await InternalCrawlAsync(item)); }
public ResponseItem(RequestItem requestItem) { RequestItem.EnsureItem(requestItem); this.Requestitem = requestItem; }