Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde
Avatar
Adam Gajdečka:1. listopadu 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. listopadu 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.