public Task <HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem, CancellationToken token)
        {
            var responseItem = new HttpResponseItem()
            {
                ResultType = requestItem.ResultType
            };

            try
            {
                var httpRequest = GetHttpRequest(requestItem);
                var r           = _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, token);
                r.Wait();
                var result = r.Result;// await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false);
                responseItem.StatusCode = result.StatusCode;
                if (!result.IsSuccessStatusCode)
                {
                    throw new WebException($"Unexpected Status Code: {result.StatusCode}");
                }

                var res = GetHttpResponseItem(result, requestItem.ResultType);
                res.Wait();
                responseItem = res.Result;// await GetHttpResponseItem(result, requestItem.ResultType).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                responseItem.Exception = ex;
            }

            return(Task.Factory.StartNew(() => { return responseItem; }));
            //return responseItem;
        }
Пример #2
0
        public async Task <HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem, int retryTimes, CancellationToken token)
        {
            for (var i = 0; i < retryTimes; i++)
            {
                var result = await GetResponseAsync(requestItem, token);

                if (result.Success)
                {
                    return(result);
                }
                Thread.Sleep(1000 * i);
            }
            Thread.Sleep(1000 * retryTimes);
            return(await GetResponseAsync(requestItem, token));
        }
        private static HttpRequestMessage GetHttpRequest(HttpRequestItem item)
        {
            var request = new HttpRequestMessage(new HttpMethod(item.Method.ToString()), item.GetUrl());

            if (!item.Referrer.IsNullOrEmpty())
            {
                request.Headers.Add(HttpConstants.Referrer, item.Referrer);
            }

            switch (item.Method)
            {
            case HttpMethodType.Post:
                request.Content = new StringContent(item.GetPostString(), item.EncodingType, item.ContentType);
                break;

            case HttpMethodType.Get:
                break;

            default:
                break;
            }
            return(request);
        }
 public Task <HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem)
 {
     return(GetResponseAsync(requestItem, new CancellationToken()));
 }
Пример #5
0
        private static HttpRequestMessage GetHttpRequest(HttpRequestItem item)
        {
            var request = new HttpRequestMessage(new HttpMethod(item.Method.ToString()), item.GetUrl());
            if (!item.Referrer.IsNullOrEmpty())
            {
                request.Headers.Add(HttpConstants.Referrer, item.Referrer);
            }

            switch (item.Method)
            {
                case HttpMethodType.Post:
                request.Content = new StringContent(item.GetPostString(), item.EncodingType, item.ContentType);
                break;
                case HttpMethodType.Get:
                break;
                default:
                break;
            }
            return request;
        }
Пример #6
0
 public async Task<HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem, int retryTimes, CancellationToken token)
 {
     for (var i = 0; i < retryTimes; i++)
     {
         var result = await GetResponseAsync(requestItem, token);
         if (result.Success) return result;
         Thread.Sleep(1000 * i);
     }
     Thread.Sleep(1000 * retryTimes);
     return await GetResponseAsync(requestItem, token);
 }
Пример #7
0
 public async Task<HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem, CancellationToken token)
 {
     var responseItem = new HttpResponseItem() { ResultType = requestItem.ResultType };
     try
     {
         var httpRequest = GetHttpRequest(requestItem);
         var result = await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false);
         responseItem.StatusCode = result.StatusCode;
         if (!result.IsSuccessStatusCode) throw new WebException($"Unexpected Status Code: {result.StatusCode}");
         responseItem = await GetHttpResponseItem(result, requestItem.ResultType).ConfigureAwait(false);
     }
     catch (Exception ex)
     {
         responseItem.Exception = ex;
     }
     return responseItem;
 }
Пример #8
0
 public Task<HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem)
 {
     return GetResponseAsync(requestItem, new CancellationToken());
 }