public void SendAsync_Redirect_FollowRedirectFalse() { const int tries = 12; var location = "https://google.com"; var redirectHandler = new RedirectMessageHandler(location); var configurableHanlder = new ConfigurableMessageHandler(redirectHandler) { NumTries = tries, FollowRedirect = false }; using (var client = new HttpClient(configurableHanlder)) { var request = new HttpRequestMessage(HttpMethod.Get, location); request.Headers.IfModifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfUnmodifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfMatch.Add(new EntityTagHeaderValue("\"a\"")); request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue("\"b\"")); HttpResponseMessage response = client.SendAsync(request).Result; // there should be only one request because follow redirect is false Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Redirect)); Assert.That(response.Headers.Location, Is.EqualTo(new Uri(location + 1))); Assert.That(redirectHandler.Calls, Is.EqualTo(1)); } }
public void SendAsync_Redirect() { var location = "https://google.com"; var redirectHandler = new RedirectMessageHandler(location); var configurableHanlder = new ConfigurableMessageHandler(redirectHandler) { NumRedirects = 5 }; using (var client = new HttpClient(configurableHanlder)) { var request = new HttpRequestMessage(HttpMethod.Get, location); request.Headers.IfModifiedSince = DateTimeOffset.UtcNow; request.Headers.IfUnmodifiedSince = DateTimeOffset.UtcNow; request.Headers.IfMatch.Add(new EntityTagHeaderValue("\"a\"")); request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue("\"b\"")); HttpResponseMessage response = client.SendAsync(request).Result; Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Redirect)); Assert.That(response.Headers.Location, Is.EqualTo( new Uri(location + (configurableHanlder.NumRedirects + 1)))); Assert.That(redirectHandler.Calls, Is.EqualTo(configurableHanlder.NumRedirects + 1)); } }
private HttpClient ConstructHttpClient(Boolean initDefaultHeaders = true, String mediaType = null) { var handler = new RedirectMessageHandler(new HttpClientHandler() { AllowAutoRedirect = false }); HttpClient client = new HttpClient(handler); client.BaseAddress = new Uri(BaseUri); if (initDefaultHeaders) { InitDefaultHeaders(client, mediaType); } return(client); }
public void SendAsync_Redirect_FollowRedirectFalse() { const int tries = 12; var location = "https://google.com"; var redirectHandler = new RedirectMessageHandler(location); var configurableHanlder = new ConfigurableMessageHandler(redirectHandler) { NumRedirects = tries, FollowRedirect = false }; using (var client = new HttpClient(configurableHanlder)) { var request = new HttpRequestMessage(HttpMethod.Get, location); request.Headers.IfModifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfUnmodifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfMatch.Add(new EntityTagHeaderValue("\"a\"")); request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue("\"b\"")); HttpResponseMessage response = client.SendAsync(request).Result; // there should be only one request because follow redirect is false Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Redirect)); Assert.That(response.Headers.Location, Is.EqualTo(new Uri(location + 1))); Assert.That(redirectHandler.Calls, Is.EqualTo(1)); } }
public void SendAsync_Redirect() { var location = "https://google.com"; var redirectHandler = new RedirectMessageHandler(location); var configurableHanlder = new ConfigurableMessageHandler(redirectHandler) { NumRedirects = 5 }; using (var client = new HttpClient(configurableHanlder)) { var request = new HttpRequestMessage(HttpMethod.Get, location); request.Headers.IfModifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfUnmodifiedSince = new DateTimeOffset(DateTime.Now); request.Headers.IfMatch.Add(new EntityTagHeaderValue("\"a\"")); request.Headers.IfNoneMatch.Add(new EntityTagHeaderValue("\"b\"")); HttpResponseMessage response = client.SendAsync(request).Result; Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Redirect)); Assert.That(response.Headers.Location, Is.EqualTo( new Uri(location + (configurableHanlder.NumRedirects + 1)))); Assert.That(redirectHandler.Calls, Is.EqualTo(configurableHanlder.NumRedirects + 1)); } }