kann jemand bitte meinen HttpWebRequest code korrigieren ? [VB.NET 2010]

02/29/2012 16:57 .Lorex#1
hi Comunity,

ich möchte eig. nicht viel reden weil der Titel sagt eig. alles

ich hatte vor mich über httpwebRequest auf epvp anzumelden nur gibt er mir immer in einer if anfrage "nicht eingeloggt" wieder.
und ich weiß wirklich nicht wo der fehler liegt :(

Code:


da es bestimmt ein richtig einfacher Fehler ist kriegt der erste 1 E*Gold was ich angemessen finde :D
02/29/2012 22:04 Adroxxx#2
#moved
03/01/2012 12:05 boxxiebabee#3
Was mir jetzt mal schnell auffällt wenn ichs sehe:
Den POST kannst du kürzen:
"vb_login_username=" + USERNAME + "&vb_login_password=" + PASSWORD + "&do=login"

Und das du dir dann ne ganze Seite runterlädst nur um zu sehen ob die Seite "Abmelden" beinhaltet ist recht ineffizient. Außerdem was machst du wenn in der Shoutbox oder in einem Thread Titel das Wort vorkommt?

Du solltest lieber das Cookie auslesen welches erzeugt wird, da steht auch drinnen ob du eingeloggt bist oder nicht :>

Ansonsten hier mal 2 Klassen, für post & get (wurde nur schnell konvertiert, musst testen ob das so geht):
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
03/01/2012 14:12 Kraizy​#4
PHP Code:
Option Strict On
Option Explicit On

Imports System
.IO
Imports System
.Net
Imports System
.Text

Public Class Form1
    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        With 
New Http
            Dim post 
As String "vb_login_username=[meinbenutzername]&vb_login_password=[meinpasswort]&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf="
            
Dim html As String = .GetResponse("http://www.elitepvpers.com/forum/login.php?do=login"post)
            
html = .GetResponse("http://www.elitepvpers.com/forum/")

            If 
html.Contains("Log Out"Then
                MsgBox
("eingeloggt")
            
End If
        
End With
    End Sub
End 
Class

Public Class 
Http
    Dim cookieCon 
As New CookieContainer
    Dim request 
As HttpWebRequest
    Dim response 
As HttpWebResponse

    
Public Function GetResponse(ByVal url As String) As String
        request 
CType(HttpWebRequest.Create(url), HttpWebRequest)
        
request.CookieContainer cookieCon
        response 
CType(request.GetResponse(), HttpWebResponse)

        Return New 
StreamReader(response.GetResponseStream()).ReadToEnd()
    
End Function

    Public Function 
GetResponse(ByVal url As StringByVal post As String) As String
        request 
CType(HttpWebRequest.Create(url), HttpWebRequest)
        
request.Method "POST"
        
request.CookieContainer cookieCon
        request
.UserAgent "Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0"
        
request.ContentType "application/x-www-form-urlencoded"

        
Dim byteArr() As Byte Encoding.UTF8.GetBytes(post)
        
request.ContentLength byteArr.Length

        Dim dataStream 
As Stream request.GetRequestStream()
        
dataStream.Write(byteArr0byteArr.Length)

        
response CType(request.GetResponse(), HttpWebResponse)

        Return New 
StreamReader(response.GetResponseStream()).ReadToEnd()
    
End Function
End Class 
03/01/2012 16:26 .Lorex#5
Quote:
Originally Posted by xKraizy View Post
PHP Code:
Option Strict On
Option Explicit On

Imports System
.IO
Imports System
.Net
Imports System
.Text

Public Class Form1
    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        With 
New Http
            Dim post 
As String "vb_login_username=[meinbenutzername]&vb_login_password=[meinpasswort]&cookieuser=1&s=&securitytoken=guest&do=login&vb_login_md5password=&vb_login_md5password_utf="
            
Dim html As String = .GetResponse("http://www.elitepvpers.com/forum/login.php?do=login"post)
            
html = .GetResponse("http://www.elitepvpers.com/forum/")

            If 
html.Contains("Log Out"Then
                MsgBox
("eingeloggt")
            
End If
        
End With
    End Sub
End 
Class

Public Class 
Http
    Dim cookieCon 
As New CookieContainer
    Dim request 
As HttpWebRequest
    Dim response 
As HttpWebResponse

    
Public Function GetResponse(ByVal url As String) As String
        request 
CType(HttpWebRequest.Create(url), HttpWebRequest)
        
request.CookieContainer cookieCon
        response 
CType(request.GetResponse(), HttpWebResponse)

        Return New 
StreamReader(response.GetResponseStream()).ReadToEnd()
    
End Function

    Public Function 
GetResponse(ByVal url As StringByVal post As String) As String
        request 
CType(HttpWebRequest.Create(url), HttpWebRequest)
        
request.Method "POST"
        
request.CookieContainer cookieCon
        request
.UserAgent "Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0"
        
request.ContentType "application/x-www-form-urlencoded"

        
Dim byteArr() As Byte Encoding.UTF8.GetBytes(post)
        
request.ContentLength byteArr.Length

        Dim dataStream 
As Stream request.GetRequestStream()
        
dataStream.Write(byteArr0byteArr.Length)

        
response CType(request.GetResponse(), HttpWebResponse)

        Return New 
StreamReader(response.GetResponseStream()).ReadToEnd()
    
End Function
End Class 
danke euch beiden , ich habe es jetzt geschafft dank euch :D
03/01/2012 16:36 Kraizy​#6
Joa..STRG+A, STRG+C & STRG+V müsste heutzutage eig jeder schaffen.