Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        public static void EnsureItem(RequestItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            EnsureUrl(item.Url);

            item.Method = EnsureMethod(item.Method);
        }
Пример #4
0
        public async Task <ResponseItem> CrawlAsync(RequestItem item)
        {
            try
            {
                RequestItem.EnsureItem(item);
            }
            catch (ArgumentNullException ex)
            {
                return(new ResponseItem(item)
                {
                    Exception = ex
                });
            }

            return(await InternalCrawlAsync(item));
        }
Пример #5
0
        public ResponseItem(RequestItem requestItem)
        {
            RequestItem.EnsureItem(requestItem);

            this.Requestitem = requestItem;
        }