Announcement

Collapse
No announcement yet.

HttpWebRequest teilt POST auf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • HttpWebRequest teilt POST auf

    Hallo zusammen,
    ich habe seit einiger Zeit ein sehr merkwürdiges Problem mit HTTP Post requests.

    Und zwar sende ich schlicht ein paar variablen als POST an eine php datei, was auch immer funktioniert hat. Jetzt hat sich irgendetwas geändert, ich weiss nicht so recht was.

    Aber nun erzeugt der HTTPwebrequest 2 fragmentierte Packete anstatt einem, was dazu führt das der Server dies nicht erkennt.

    Es passiert folgendes:
    Zuerst schickt das Framework den normalen Header, und in einem seperaten Packet schickt es die POST daten.

    Wenn ich das ganze mit Sockets mache geht es ohne Probleme, aber beim httpwebrequest ist die Verarbeitung mit dem httpwebresponse so schön gemütlich

    Der Code ist folgender:

    Code:
     Sub TestAltLogin()
    
            Dim login As WebRequest = WebRequest.Create("http://seite.de/login.php")
            login.Method = "POST"
            Dim postData() As Byte = ASCII.GetBytes("data")
            login.ContentLength = postData.Length
            login.ContentType = "application/x-www-form-urlencoded"
    
            Dim nw As Stream = login.GetRequestStream
            nw.Write(postData, 0, postData.Length)
            nw.Close()
    
            End
    
        End Sub
    scheinbar schickt das Framework schon ab GetRequestStream das erste Packet ab und anschliessend erst nach dem Write den Inhalt des Packetes.

    Hat jemand eine Idee woher das kommen kann? Gibt es da eine Einstellung die ich vielleicht übersehen habe? Hat jemand ähnliche Probleme lösen können?

    mfg

  • #2
    So habs nu doch ganz VB6 Socketmässig gelöst ^^
    So Quasi der Oldschool weg, mit kopierten Wireshark Captures

    Ziel des Ganzen war das Cookie herauszulesen.

    Habe vlt die Post daten im folgenden Quellcode nicht richtig wieder zusammengepflückt, aber die kann man sich auch selbst gut erarbeiten mit dem Quellcode:

    Code:
      Function GetLoginCookie() As String
    
            Dim Login As String = "POST /login.php HTTP/1.1" & vbCrLf & _
            "Host: seite.de" & vbCrLf & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 4.0.20506)" & vbCrLf & _
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & vbCrLf & _
    "Accept-Encoding: gzip,deflate" & vbCrLf & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf & _
    "Keep-Alive: 300" & vbCrLf & _
    "Connection: keep-alive" & vbCrLf & _
    "Referer: http://seite.de/index.php" & vbCrLf & _
    "Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
    "Content-Length: " & 46 & vbCrLf & vbCrLf & _
    data
    
    
            Console.WriteLine("Logge ein")
    
            Dim client As New TcpClient("seite.de", 80)
            Dim sendLogin As Byte() = ASCII.GetBytes(Login)
            Dim nS As NetworkStream = client.GetStream
            nS.Write(sendLogin, 0, sendLogin.Length)
    
    
            While client.Available = 0
            End While
    
            Dim sr As New StreamReader(nS)
    
            Dim readed As String = sr.ReadToEnd
           
            If readed.Contains("302 Found") Then
                Console.WriteLine("Login erfolgreich")
            Else
                Console.WriteLine("Login fehlgeschlagen")
                MsgBox(readed)
                Console.ReadLine()
                End
            End If
    
            Dim Scookie As String = Split(Split(readed, "Set-Cookie: ")(1), ";")(0)
            Return Scookie
    
        End Function
    Ich hoffe es hilft noch wem.

    mfg

    Comment

    Working...
    X