2012-03-26 10 views
1

Ich versuche, mich mit einer POST-Anfrage in VB.Net bei einem cPanel anzumelden. Ich habe die korrekten Zugangsdaten, wenn ich mich anmelde und beim Posten bekomme ich immer noch eine 'Unauthorized (401)' Antwort wenn es '301' sein sollte (analysiert mit Tamper Data Firefox Add-On). Im Folgenden finden Sie meine Post-Anfrage Informationen und Funktionen.VB.Net 401 Nicht autorisierte HTTP-Webanfrage

Private Function POSTreq(ByVal URL$, ByVal Data$) 
     Dim tempCookie As New CookieContainer 
     Dim DataBytes As Byte() = Encoding.ASCII.GetBytes(Data) 
     Dim Request As HttpWebRequest = TryCast(WebRequest.Create(URL), HttpWebRequest) 
     Request.Method = "POST" 
     Request.ContentType = "application/x-www-form-urlencoded" 
     Request.ContentLength = DataBytes.Length 

     Dim PostData As Stream = Request.GetRequestStream() 
     PostData.Write(DataBytes, 0, DataBytes.Length) 
     PostData.Close() 

     Dim Response As HttpWebResponse = Request.GetResponse() 
     Dim ResponseStream As Stream = Response.GetResponseStream() 
     Dim StreamReader As New StreamReader(ResponseStream) 
     Dim Text$ = StreamReader.ReadToEnd() 

     Return Text 
    End Function 

Beitrag URL

http://example.com:2082/login/ 

Post-Daten

login_theme=cpanel&user=USERNAME&pass=PASSWORD&goto_uri=%2F 

Antwort

2

konnte ich Ihr beschriebene Verhalten mit Ihrem Code reproduzieren.

Wenn stelle ich die CookieContainer es auf meiner Seite funktioniert, und ich war in der Lage eingeloggt sein:

rem ... 
Request.CookieContainer = tempCookie 
Request.Method = "POST" 
rem ... and so on ... 

Die zweite Lösung wäre, nur die Anmeldeinformationen liefern:

rem ... 
Dim myFullUri = new Uri(URL) 
Dim myCredentials As New NetworkCredential(Username, Password) 
Dim myCache As New CredentialCache() 

rem Add the credentials for that specific host and 
rem for "Basic" authentication only 
myCache.Add(New Uri(myFullUri.Scheme & "://" & myFullUri.Authority), _ 
    "Basic", myCredentials) 

Request.Credentials = myCache 

Request.CookieContainer = tempCookie 
Request.Method = "POST" 
rem ... and so on ... 
Verwandte Themen