[GUIDE]HttpWebRequest Post und get anmeldung

  • Hallo ich hab mir vorgenommen ein tutorial zum login via httpwebrequest zu erstellen
    also los gehts


    Schritt 1: der HTML File

    der html file für eine Anmeldung läuft technich gesehen, egal wie komplex er aufgebaut ist immer auf dieses ergebnis raus:

    Code
    <form action="test.php", method="post">
    	<input type="text" name="username"><br>
    	<input type="password" name="pw"><br>
    	<input type="submit">
    </form>

    das bedeutet etwa:
    1. formular erstellen das beim absenden die test.php aufruft mit dem methodentyp post
    2. eine textbox gehört zum formular, ihr inhalt wird über den namen(username) abgerufen
    3. eine Passwordtextbox gehört zum formular, ihr inhalt wird über den namen(pw) abgerufen
    4. ein button sendet das formular ab
    5. ende des formulars

    für uns heisst das soviel wie
    eine post methode, die beim absenden den inhalt von username und pw sendet also ist der post inhalt, der in den stream kommt username=TextDerTextbox&pw=TextDerPasswordBox
    und der entsprechende link ist OrdnerDieserHtmlDatei/test.php
    der referer link ist der link zu der html datei aus der wir den code haben

    Schritt 2: Programmieren
    In Visual basic muss zu erst mal die System.Net und system.IO importiert werden

    dann wird eine übergeordnete(globale) variable erstellt, vom type cookiecontainer
    im bsp heisst sie ccon

    nun einige variablen deklarieren:

    Code
    ccon = New CookieContainer
            Dim url As String = "http://127.0.0.1/test.php"
            Dim PostString As String = "username=TextDesFeldes&pw=TextdesPasswordFeldes"
            Dim pdata() As Byte = Text.Encoding.ASCII.GetBytes(PostString)
            Dim req As HttpWebRequest = HttpWebRequest.Create(url)


    nun zur erklärung
    1. den cookiecontainer initialisieren
    2. die url zum loginfile in einer variable speichern(eigentlich unnötig)
    3. den poststring in einer variable speichern(übersichtshalber)
    4. den PostString als byte array speichern
    5. das HttpWebRequest erstellen

    nun müssen einige einstellungen geändert werden

    Code
    req.Method = "POST"
            req.ContentType = "application/x-www-form-urlencoded"
            req.ContentLength = pdata.Length
            req.Referer = "http://127.0.0.1/test1.php"
            req.CookieContainer = ccon
            req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
            req.AllowAutoRedirect = True


    1. Art der methode festlegen(aus schritt 1 wissen wir das es eine form mit der methode post war)
    2. die länge des zu postenden strings festlegen
    3. die html/php datei die eigentlich das loginformular senden sollte
    4. den cookiecontainer zuweisen (!!WICHTIG!!)
    5. den Useragend Festlegen (sagt dem server welcher browser verwendet wird in diesem fall simuliert es firefox)
    6. umleitungsanfragen erlauben

    Nun fehlt nur noch das senden des post strings
    dafür erstellen wir einen Stream und schreiben den command rein

    Code
    Dim str As Stream = req.GetRequestStream
            str.Write(pdata, 0, pdata.Length)


    1. Den stream erstellen und öffnen
    2. Daten in den stream schreiben (datenarray, anfangspunkt im stream, länge des arrays)

    dann wird der server einen antwortstream in form eines html codes senden den bekommen wir mit eine webresponse

    Code
    Dim res As HttpWebResponse = req.GetResponse
            Dim reader As New IO.StreamReader(res.GetResponseStream)


    1. Die antwort des servers erhalten
    2. den stream mit einem reader öffnen

    endlich den html code rauslesen und speichern

    Code
    Dim html As String = reader.ReadToEnd

    nun nur noch einige releases vornehmen

    Code
    str.Close()
            reader.Close()


    hoffe es hat wenigstens einem geholfen
    Verbesserungsvorschläüge/Kritik bitte posten

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!