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; }
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())); }
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 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); }
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; }
public Task<HttpResponseItem> GetResponseAsync(HttpRequestItem requestItem) { return GetResponseAsync(requestItem, new CancellationToken()); }