public async Task <IResponse> Call(Uri url, IHttpOptions options, CancellationToken cancellationToken) { var request = WebRequest.Create(url); var httpRequest = request as HttpWebRequest; if (httpRequest != null && !String.IsNullOrEmpty(options?.Method)) { httpRequest.Method = options.Method; foreach (var header in options.Headers) { httpRequest.Headers[header.Key] = header.Value; } } IDisposable registration = null; registration = cancellationToken.Register(() => { httpRequest.Abort(); registration?.Dispose(); }); try { var response = await httpRequest.GetResponseAsync(); if (response is HttpWebResponse httpResponse) { return(new HttpResponse(response.ResponseUri, httpResponse)); } return(null); } catch (WebException error) { if (error.Status == WebExceptionStatus.RequestCanceled) { throw new OperationCanceledException(cancellationToken); } throw; } }
public async Task <IResponse> Call(Uri url, IHttpOptions options, CancellationToken cancellationTokenn) { var httpRequest = new HttpRequestMessage(new HttpMethod(options?.Method ?? "GET"), url); if (options != null) { foreach (var header in options.Headers) { if (!httpRequest.Headers.TryAddWithoutValidation(header.Key, header.Value)) { httpRequest.EnsureContentFrom(options.Body).Headers.Add(header.Key, header.Value); } } } var httpResponse = await Client.SendAsync(httpRequest, HttpCompletionOption.ResponseContentRead, cancellationTokenn); return(new HttpResponse(url, httpResponse)); }
private async Task <IResponse> MakeRequestTo(Uri url, IHttpOptions options, CancellationToken cancellationToken) { return(await _httpCall(url, options, cancellationToken)); }