[GUIDE]HttpWebRequest Post und get anmeldung

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [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:

      Quellcode

      1. <form action="test.php", method="post">
      2. <input type="text" name="username"><br>
      3. <input type="password" name="pw"><br>
      4. <input type="submit">
      5. </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:

      Quellcode

      1. ccon = New CookieContainer
      2. Dim url As String = "http://127.0.0.1/test.php"
      3. Dim PostString As String = "username=TextDesFeldes&pw=TextdesPasswordFeldes"
      4. Dim pdata() As Byte = Text.Encoding.ASCII.GetBytes(PostString)
      5. 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

      Quellcode

      1. req.Method = "POST"
      2. req.ContentType = "application/x-www-form-urlencoded"
      3. req.ContentLength = pdata.Length
      4. req.Referer = "http://127.0.0.1/test1.php"
      5. req.CookieContainer = ccon
      6. req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
      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

      Quellcode

      1. Dim str As Stream = req.GetRequestStream
      2. 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

      Quellcode

      1. Dim res As HttpWebResponse = req.GetResponse
      2. 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

      Quellcode

      1. Dim html As String = reader.ReadToEnd


      nun nur noch einige releases vornehmen

      Quellcode

      1. str.Close()
      2. reader.Close()




      hoffe es hat wenigstens einem geholfen
      Verbesserungsvorschläüge/Kritik bitte posten
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )