Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:23.8.2014 11:23

Ahoj, už delší dobu řeším takovýto problém: mám metodu, která bere jako parametry

string url, Dictionary<string,string> args

Jejím úkolem je poslat formulářová data z toho Dictionary (jakoby název pole, hodnota) na tu url a vytáhnout z toho zdroják+cookies, nebo ty cookies někde uchovat a automaticky je tam přidávat při dalších requestech. Vytvořil jsem tohle:

class Browser
    {
        public HttpWebRequest Request { private set; get; }
        public HttpWebResponse Response { private set; get; }
        public CookieCollection Cookies { private set; get; }
        public string DocText { private set; get; }

        public void Navigate(string url, Dictionary<string, string> args)
        {
            using (WebClient client = new WebClient())
            {
                System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
                foreach (KeyValuePair<string, string> k in args)
                    reqparm.Add(k.Key, k.Value);
                byte[] responsebytes = client.UploadValues(url, "POST", reqparm);
                DocText = Encoding.UTF8.GetString(responsebytes);
            }
        }
    }

Problém je, že to nejspíš žádná data neposílá, když to zavolám

Dictionary<string,string> dic=new Dictionary<string,string>();
            dic.Add("email",@"nejakyEmail");
            dic.Add("password", "strasneTajneHeslo");
            Browser b= new Browser();
            b.Navigate("http://www.itnetwork.cz/prihlaseni", dic);
Odpovědět
23.8.2014 11:23
the cake is a lie
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:23.8.2014 16:41

Vyřešeno, funguje to, jen nevím, proč to nefungovalo na posílání dat sem o_O

Nahoru Odpovědět
23.8.2014 16:41
the cake is a lie
Avatar
Odpovídá na Petr Čech
Michal Žůrek - misaz:23.8.2014 16:59

prosmtě na co tam máš ten public

HttpWebRequest Request { private set; get; }

když ho stejně nepoužiješ? Nejprve se bavíš o requestu, pak o Dictionary (ten s tím však mírně souvisí) a nakonec použiješ WebClient.

 
Nahoru Odpovědět
23.8.2014 16:59
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Petr Čech:23.8.2014 17:21

To je jen část kódu a asi 15. verze, ještě uvidím, jestli potřebuju z toho tahat ten request, response a cookies. "request" nemyslím třídu, ale http požadavek.

Nahoru Odpovědět
23.8.2014 17:21
the cake is a lie
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 4 zpráv z 4.