Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Diskuze: GET request se spuštením JS

C# .NET .NET (C# a Visual Basic) GET request se spuštením JS American English version English version

Aktivity (3)
Avatar
Adam Gajdečka:17. září 18:50

Vůbec nevím, jak to udělat. Google nepomohl.

Zkusil jsem: toto nejde, nechová se to jako prohlížeč

public bool Get(string uri)
       {
           try
           {
               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
               request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

               using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
               using (Stream stream = response.GetResponseStream())
               using (StreamReader reader = new StreamReader(stream))
               {
                   // return reader.ReadToEnd();
               }
               return true;
           }
           catch (Exception)
           {

               return true;
           }

       }

V různých diskuzích na netu jsou jen řešení pro Windows Desktop, kdy se použije komponenta WebBrowser

Chci docílit: Potřebuji vytvořit GET request na určitou webovou adresu. Potřebuji na té stránce otestovat, zda je tam vložený správně JS kód. Takže mi stačí udělat GET request, ale musí se spustit i JS kódy.

Problém je, že klasicky JS spouští prohlížeč. Nejde to udělat klasickým GET requestem. Potřebuji to napsat pro ASP. NET MVC, verze 4.6 .NET FRAMEWORK

 
Odpovědět 17. září 18:50
Avatar
Odpovídá na Adam Gajdečka
don.jarducius:17. září 20:26

Ahoj,a o ti brání v použití WebBrowser?
Zkus tohle... je to úryvek kódu
Používám to v multithread aplikaci na generování obrázků z html.

var docKomplet = false;
            var th = new Thread(() =>
            {
                WebBrowser wb1 = new WebBrowser();
                var hasPrinted = false;
                wb1.DocumentCompleted += (sender, e) =>
                {
                        // logika po načtení stránky
                        docKomplet = true;
                    wb1.Dispose();
                    Application.ExitThread();
                };
                wb1.Size = new System.Drawing.Size(1376, 786);
                wb1.ScriptErrorsSuppressed = true;
                wb1.DocumentText = Content;
                Application.Run();
            });
            th.SetApartmentState(ApartmentState.STA);
            th.Start();
            // Cekani na konec
            while (!docKomplet)
                Thread.Sleep(50);
 
Nahoru Odpovědět 17. září 20:26
Avatar
Odpovídá na don.jarducius
Adam Gajdečka:17. září 23:04

a jak to mám udělat, když je to webová aplikace?

 
Nahoru Odpovědět 17. září 23:04
Avatar
David Klouček:18. září 8:26

Firefox a Chrome mají "headless mode", kdy jednoduše spustíš prohlížeč přes konzoli bez GUI a necháš si vrátit výstup.
https://developer.mozilla.org/…eadless_mode
https://developers.google.com/…dless-chrome

Editováno 18. září 8:28
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 18. září 8:26
Avatar
Odpovídá na Adam Gajdečka
don.jarducius:18. září 8:33

Je to standardní .NET aplikace jako každá jiná, máš k dispozici všechny knihovny. Přidej si do referencí System.Window­s.Forms a bude ti to fungovat.
Pokud by to byl .NET Core pak by bylo řešení jiné.

 
Nahoru Odpovědět 18. září 8:33
Avatar
Odpovídá na David Klouček
Adam Gajdečka:18. září 8:54

díky. Podívám se na to

 
Nahoru Odpovědět 18. září 8:54
Avatar
Adam Gajdečka:18. září 10:26

Řešení

var chromeOptions = new ChromeOptions();
               chromeOptions.AddArguments("headless");

               using (var browser = new ChromeDriver(chromeOptions))
               {
                   browser.Url = "moje url";
                   browser.Navigate();
               }
 
Nahoru Odpovědět 18. září 10:26
Avatar
Odpovídá na Adam Gajdečka
don.jarducius:18. září 12:54

Jen varování...
až to nahraješ na server, bude tam taky chrome? Jsi si jistý, že to bude fungovat i za 10 verzí Chromu?
S použitím Google aplikací bych byl velmi opatrný, mívají schopnost měnit funkčnost... zaděláš si tím na možné problémy...

 
Nahoru Odpovědět 18. září 12:54
Avatar
Odpovídá na don.jarducius
Adam Gajdečka:18. září 13:07

chrome jsem nainstaloval na server. Budoucnost ukáže, zda to bude dlouhodobě fungovat. Je to naštěstí jen "preventivní test", případně mi přijde upozornění emailem :-)

 
Nahoru Odpovědět  +1 18. září 13:07
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 9 zpráv z 9.