Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 3
0
        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));
            }
        }