załączniki przez HttpWebRequest

0

A więc tak:
Chciałbym zbudować program, króry po primo loguje się na skrzynkę Gmail, po sekundo odczytuje tekst w tekstowym załączniku. I to wszystko przez HttpWebRequest oraz HttpWebResponse.
Pierwszy z tych założeń już zbudowałem:

  string account = "loginjakistam";
            string password = "ijakieshaslo";
            string postData = 
                "service=mail&passive=true&rm=false&continue=http%3A%2F%2F" + 
                "mail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&ltmpl=yj_blanco&ltmplcache=2&Email=" + 
                account +"&Passwd=" + password;
            string logonUrl = "https://www.google.com/accounts/ServiceLoginAuth";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(logonUrl);

            byte[] bdata = System.Text.ASCIIEncoding.ASCII.GetBytes(postData);
            req.ContentLength = bdata.Length;
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method = "POST";
            req.CookieContainer = new CookieContainer();
            Stream reqStream = req.GetRequestStream();
            reqStream.Write(bdata, 0, bdata.Length);
            reqStream.Close();

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            Stream resStream = res.GetResponseStream();
            StreamReader reader = new StreamReader(resStream);
            string data = reader.ReadToEnd();

Gorzej z tym drugim... Powiedzmy, że mam już adres do załącznika tekstowego.
jeśli tak napiszę:

            string plik = "http://mail.google.com/itamcosdalejf";
            req = (HttpWebRequest)WebRequest.Create(plik);

            HttpWebResponse res2 = (HttpWebResponse)req.GetResponse();
            Stream resStream2 = res2.GetResponseStream();
            StreamReader reader2 = new StreamReader(resStream2);
            data = reader2.ReadToEnd();

to w zmiennej data zamiast wiadomości zobaczę informację, że jestem niezalogowany, itd.
Jak przesłać prośbę o plik, tak żeby można go było ściągnąć (a raczej odczytac jego tekst)?

0

Tworząc nowy obiekt:
req = (HttpWebRequest)WebRequest.Create(plik);
gubisz informacje o ciasteczkach, w których siedzi zapewne id sesji. Bez tego gmail nie wie, że jesteś zalogowany.

0

Dzięki bardzo :)
mam jednak jeszcze jeden problem. Jaką metodą odczytać albo tekst (pobrać) w załączniku txt albo takowy załącznik ściągnąć na dysk (chociaż to to samo...)

WebClient client = new WebClient;
client.DownloadFile(tu adres pliku, tu nazwa pliku);

Jak wiadomo ten sposób nie zadziała, gdyż plik pobieram ze skrzynki mailowej. Trzebaby jakoś przekazać cookie, tylko nie wiem jak.. Ma ktoś jakiś pomysł?

0
Marooned napisał(a)

Tworząc nowy obiekt:
req = (HttpWebRequest)WebRequest.Create(plik);
gubisz informacje o ciasteczkach, w których siedzi zapewne id sesji. Bez tego gmail nie wie, że jesteś zalogowany.

Moze zadam dosc latwe pytanie ,ale jak wlasciwie wyslac te ciasteczka. Domyslam się ,że trzeba uzyc metody req.CookieContainer.Add(cookie) przed utworzeniem response tylko nie wiem za bardzo jak mam te cookie wczesniej zapisać. Jest chyba taka metoda jak SetCookie ,ale nie wiem jak jej uzyc (co dokladnie podac w parametrach).

Jeśli ktoś mógłby podać jakiś fragment kodu w którym jest zapisywanie cookie i fragment w ktorym jest wysylanie to bylbym wdzieczny bardzo. Tylko prosze jesli podajecie jakies nazwy wlasne to o objasnienie.

Robie prosty program ,który ma sie zalogowac na forum i co kilka sekund pobierac z niej kod zrodlowy. Logowanie i POST juz jakos mi poszlo ,ale wlasnie chyba nie zapisuje ID sesji nigdzie i mnie wylogowywuje przy kazdym GET

1 użytkowników online, w tym zalogowanych: 0, gości: 1