IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zjištění poslední url po redirectech

Aktivity
Avatar
Adam Gajdečka:1.11.2018 10:06

Potřebuji zjistit poslední adresu po redirectu (je jich většinou několik těch redirectů). Problém je například s adresou http://tracking.affiliateclub.cz/aff_c?… - moje metoda mi vrátí jako poslední url http://tracking.affiliateclub.cz (protože server vrací OK 200)

Ovšem když si tuto adresu vložím zde, tak OK 200 by měla vracet až https://www.justaway.cz (tedy ta poslední)
https://httpstatus.io/

Když jsem použil jiné online nástroje jako httpstatus.io, tak mi některé taky vracely OK 200 již při http://tracking.affiliateclub.cz

Zřejmě https://httpstatus.io/ to dělá nějakým jiným technickým způsobem. Prosím tedy o radu, rád bych zůstal RestSharpu.Díky

Používám .NET Core 2.1

Zkusil jsem:

public static string GetFinalRedirectedUrl(string url)
     {
         List<HttpStatusCode> statusCodes = new List<HttpStatusCode>();
         statusCodes.Add(HttpStatusCode.Found);
         statusCodes.Add(HttpStatusCode.Moved);
         statusCodes.Add(HttpStatusCode.MovedPermanently);
         statusCodes.Add(HttpStatusCode.Redirect);
         statusCodes.Add(HttpStatusCode.PermanentRedirect);
         statusCodes.Add(HttpStatusCode.TemporaryRedirect);
         statusCodes.Add(HttpStatusCode.RedirectMethod);
         statusCodes.Add(HttpStatusCode.RedirectKeepVerb);

         try
         {
             var client = new RestClient(url);
             var request = new RestRequest(Method.HEAD);

             string url1 = "";
             // execute the request
             IRestResponse response = client.Execute(request);

             if (statusCodes.Contains(response.StatusCode))
             {
                 url1 = response.Headers.SingleOrDefault(s => s.Name == "Location").Value.ToString();
                 bool run = true;
                 while (run)
                 {
                     var client1 = new RestClient(url1);
                     var request1 = new RestRequest(Method.HEAD);

                     // execute the request
                     IRestResponse response1 = client1.Execute(request);

                     if (statusCodes.Contains(response1.StatusCode))
                     {
                         url1 = (response1.Headers.SingleOrDefault(s => s.Name == "Location").Value.ToString());
                     }
                     else
                     {
                         url1 = response1.ResponseUri.ToString();
                         break;
                     }
                 }
             }
             else
             {
                 return url1 = response.ResponseUri.ToString();
             }
             return url1;
         }
         catch (Exception)
         {

             return "";
         }

     }
 
Odpovědět
1.11.2018 10:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.