Inloggen op een site

Status
Niet open voor verdere reacties.

Bakelsevv

Gebruiker
Lid geworden
22 nov 2007
Berichten
49
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
Code:
        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.
 
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:
Code:
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;
            }
        }
    }
}

ingelogd.png


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.
 
Dat je altijd gelukt krijg is logisch, want je request gaat gewoon prima. Of je response wel of geen cookies bevat, maakt niet uit, want je handelt nergens af dat het bij het ontbreken van cookies fout zou zijn.

Als je vervolgens een xml bestand wilt opvragen zul je de ontvangen cookies vervolgens wel mee moeten sturen met je request. Maar dat staat op zich ook prima uitgelegd op de plek waar je deze code vandaan hebt...


http://www.west-wind.com/presentations/dotnetwebrequest/dotnetwebrequest.htm
 
Ik denk dat die HTML visualizer daar gewoon niet op berekend is. Het zal wel geen echte webbrowser zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan