Toon posts:

[C#] Inloggen op een website

Pagina: 1
Acties:

Onderwerpen


  • Gynnad
  • Registratie: september 2010
  • Laatst online: 22:56
Hallo,

Ik probeer op een site in te loggen via een applicatie om daarna XML gegevens er vanaf te halen. Helaas krijg ik het alleen niet voor elkaar om of in te loggen of die XML gegevens eraf te halen.

Vandaar dat ik dit topic heb geopend om te vragen of iemand van jullie het probleem kan vinden:

Inloggen
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        public String signIn(String userName, String passWord)
        {
            try
            {

                //http://www.maxithlon.com/index.php?user=XXX&password=XXX&user_access=maxixml 
                String lcUrl = "http://www.maxithlon.com/index.php?user=" + userName + "&password=" + passWord + "&user_access=maxixml";
                HttpWebRequest loHttp = loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
                loHttp.UserAgent = "XXXXXXXXXX/v1.0";
                loHttp.CookieContainer = new CookieContainer();
                if (m_CookiesCol != null && m_CookiesCol.Count > 0)
                    loHttp.CookieContainer.Add(m_CookiesCol);
                HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
                m_CookiesCol = loWebResponse.Cookies;
                if (loWebResponse.Cookies.Count > 0)
                    m_CookiesCol = loWebResponse.Cookies;
                Encoding enc = Encoding.GetEncoding(1252);
                StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
                String lcHtml = loResponseStream.ReadToEnd();
                loWebResponse.Close();
                loResponseStream.Close();
                return lcHtml;
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }


Graag wil ik eerst het inloggen goed voor elkaar hebben, daarna wil ik pas kijken voor het XML van de site af halen.

[Voor 0% gewijzigd door RobIII op 09-11-2010 19:34. Reden: Code tags gefixed :P]

"Don't worry, about a thing, Cause every little thing is gonna be alright"


  • Gynnad
  • Registratie: september 2010
  • Laatst online: 22:56
CodeCaster schreef op zaterdag 30 oktober 2010 @ 12:49:
[...]

Foutmeldingen, variabelen die leeg blijven of cookies die niet worden geset?

En ga eens debuggen :)
Kijk het lastige is,dat ik zelf 1 jaar C# heb gehad en 1 jaar Java, maar dat ik zelf nooit iets met Cookies heb geleerd. Nu ben ik tot deze code gekomen, maar kom ik er niet uit wanneer ik kan kijken of ik daadwerkelijk ben ingelogd of dat er niets gebeurd. Ik ben er nu nog even aan het sleutelen en zal dadelijk de code weer eens posten.

Zal dan ook even al mijn bevindingen posten!

Edit:

Code veranderd in:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Xml;
using System.Data;
using System.IO;
using System.Windows.Forms;

namespace Maxato
{
    class Connect
    {
        private CookieCollection m_CookiesCol = new CookieCollection();

        public String signIn(String userName, String passWord)
        {
            try
            {

                //http://www.maxithlon.com/index.php?user=XXX&password=XXX&user_access=maxixml 
                //String lcUrl = "http://www.maxithlon.com/index.php?user=" + userName + "&password=" + passWord + "&user_access=maxixml";
                String lcUrl = string.Format(@"http://www.maxithlon.com/index.php?user={0}&password={1}&user_access=maxixml", userName, passWord);
                HttpWebRequest loHttp = loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
                loHttp.UserAgent = "XXXXXXXXXX/v1.0";
                loHttp.CookieContainer = new CookieContainer();
                if (m_CookiesCol != null && m_CookiesCol.Count > 0)
                    loHttp.CookieContainer.Add(m_CookiesCol);
                HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
                m_CookiesCol = loWebResponse.Cookies;
                if (loWebResponse.Cookies.Count > 0)
                    m_CookiesCol = loWebResponse.Cookies;
                Encoding enc = Encoding.GetEncoding(1252);
                StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
                String lcHtml = loResponseStream.ReadToEnd();
                loWebResponse.Close();
                loResponseStream.Close();
                MessageBox.Show("Gelukt"); 
                return lcHtml;
            }
            catch (Exception e)
            {
                MessageBox.Show("Mislukt"); 
                return e.Message;
            }
        }
    }
}




Als ik mijn class debug doorloopt hij alles en geeft hij nergens een foutmelding. Maar als ik bij lcHtml HTML Visualizer doe dan krijg ik de pagina te zien zoals je deze hoort te zien als je bent ingelogd, maar als ik dan in deze pagina op een link drukt naar een andere pagina binnen deze website ben ik ineens uitgelogd. Dus ik ga er vanuit dat hij op een of andere manier de Cookies niet goed opslaat.

Doe ik het bovenstaande proces met een verkeerd wachtwoord/gebruikersnaam dan kom ik gewoon aan de buitenkant van de pagina zonder dat ik ben ingelogd.

ps. De messagebox met 'Gelukt' doet hij altijd, ook als ik een verkeerd wachtwoord/gebruikersnaam invul, weet niet waar ik dit exact af zou moeten vangen.

[Voor 69% gewijzigd door RobIII op 09-11-2010 19:35]

"Don't worry, about a thing, Cause every little thing is gonna be alright"


  • Gynnad
  • Registratie: september 2010
  • Laatst online: 22:56
Hmm ik kom er totaal niet uit, en kan nergens een tutorial/pagina vinden waar staat uitgelegd hoe ik een file/xml bestand van een site af kan halen. Het xml bestand staat geschreven in een .php extensie. Ik ben echt ten einde raad..

Hier mijn code, hij is een beetje slordig nu, omdat ik vanalles heb geprobeerd maar ik kom er maar niet uit..

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
        public String signIn(String userName, String passWord)
        {
            string url = string.Format(@"http://www.maxithlon.com/index.php?user={0}&password={1}&user_access=maxixml", userName, passWord);
            request = (HttpWebRequest)WebRequest.Create(url);
            request.AllowAutoRedirect = false;
            request.CookieContainer = new CookieContainer();
            response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode != HttpStatusCode.Found)
                {
                //ToDo: if the page wasn't found raise Exception //instead of this textmessage MessageBox.Show("Something Wrong");
                response.Close();
                request.KeepAlive = false;
                return null;
                }
            cookies = request.CookieContainer;
            response.Close();
            request = (HttpWebRequest)WebRequest.Create("http://www.maxithlon.com/xml/lista_atleti.php");
            request.AllowAutoRedirect = false;
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse(); using (Stream s = response.GetResponseStream())
            {
                StreamReader sr = new StreamReader(s);
                string line;

                XmlTextReader myXmlURLreader = null;
                myXmlURLreader = new XmlTextReader("http://www.maxithlon.com/xml/lista_atleti.php");
                    

                while (myXmlURLreader.Read())
                {
                    Console.WriteLine(myXmlURLreader.Read());

                }
                if (myXmlURLreader != null)
                    myXmlURLreader.Close();

                while (!sr.EndOfStream)
                {
                    //todo read the page contents
                }
            }
            return null;
      }

[Voor 0% gewijzigd door RobIII op 09-11-2010 19:35. Reden: Code tags gefixed :P]

"Don't worry, about a thing, Cause every little thing is gonna be alright"


  • Gynnad
  • Registratie: september 2010
  • Laatst online: 22:56
Haan schreef op dinsdag 09 november 2010 @ 19:46:
Ik weet niet of het met inloggen heel anders wordt, maar om een XML bestand vanuit een url te laden is dit al voldoende:
C#:
1
2
WebClient client = new WebClient();
string content = client.DownloadString(url);

Dit gebruik ik zelf in een applicatie om een XML te downloaden van een php pagina.
Nee dat is niet voldoende, ben nog steeds aan het aanklote met die coockies..

"Don't worry, about a thing, Cause every little thing is gonna be alright"

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee