[HttpWebRequest] CookieContainer Problem

05/25/2013 11:57 roteisenklinge#1
Hallo meine Lieben ,
folgendes, ich habe 2 Funktionen


1. Funktion für Login auf einer Webseite


Einloggen usw Funktioniert wunderbar
Ich habe einen Global CookieContainer
Er enthält am Ende .Count = 3

2. Wenn die 1. Funktion ausgeführt wurde soll man per Bottum Click diese Funktion auslösen, hier lese ich den Kontostand aus.

Am Anfang der Funk aus Debug Zwecken habe ich den GlobalcookieContainer auf seine Count Zahl gepürft => aufeinmal = 0

Mein Problem :

Rufe ich die 2 Funktion innerhalb der 1 Auf funktionert die Request, rufe ich die 2 Allerdings seperat durch ein Bottum Click auf, bekomme ich Unautorisierter Zugriff also sind meine Login Cookies nicht übergeben worden.


Dim cookieCon As New CookieContainer Global Cookie Container
request.CookieContainer = cookieCon dadurch eingebunden.


Vielen Dank für eure Hilfe, zerbreche mir schon die ganze Zeit den Kopf
05/25/2013 12:17 reCougar#2
Zeig uns bitte den Code.
05/25/2013 12:32 roteisenklinge#3
Okay:


Code:
Dim cookieCon As New CookieContainer

Public Function logn_auth(ByVal email As String, ByVal passwort As String) As String

Dim request As HttpWebRequest
request = DirectCast(HttpWebRequest.Create(loginurl), HttpWebRequest)request.Method = "POST"
request.CookieContainer = cookieCon
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)

' wäre hier die Funkt coins(url) würde es funktionieren
succes = login_auth2("", "false")


MsgBox(cookieCon.Count.ToString)
            cookies = cookieCon


 Return succes

    End Function

' Funktioniert wunderbar unwichtige Details weggelassen
Code:
 Public Function coins(ByVal url As String) As String
 MsgBox(cookieCon.Count.ToString)
Dim postreq As HttpWebRequest = CType(HttpWebRequest.Create(usercp), HttpWebRequest)
postreq.CookieContainer = cookieCon
  Dim postresponse As HttpWebResponse = CType(postreq.GetResponse(), HttpWebResponse)



Return 
    End Function

Würde ich die zweite fk in die 1 eingabuen also vor "succes = ..."
würdes es funktionieren, rufe ich diese seperat auf, ist der Cookie Container leer und Authentifierungsfehler tritt auf
05/25/2013 12:52 tolio#4
mach nen globalen cookiecontainer, übergebe den an jede request funktion und nutze ausschließlich im ganzen code genau nur diesen einen container, dann passiert sowas nicht

€dit ist natürlich noch die frage ob du ne webrequest klasse hast oder du sie als statische funktionen nutzt. bei ersterem muss die entsprechende klasse natürlich den container besitzen
05/25/2013 13:23 roteisenklinge#5
Quote:
Originally Posted by tolio View Post
mach nen globalen cookiecontainer, übergebe den an jede request funktion und nutze ausschließlich im ganzen code genau nur diesen einen container, dann passiert sowas nicht

€dit ist natürlich noch die frage ob du ne webrequest klasse hast oder du sie als statische funktionen nutzt. bei ersterem muss die entsprechende klasse natürlich den container besitzen
Hallo,
danke ;) Anstatt class.vb ne Module.vb genutzt und dann gings
05/26/2013 13:56 Kraizy​#6
Bastel dir ne kleine Http-Klasse, statt so nen Müll zu produzieren.
05/26/2013 19:10 dready#7
Er könnte nun natürlich sagen, das war sein Design, da er die Komplexität zugunst der Perfomancen erhöht hat :D *trolllll* :D

Just Kidding, hast natürlich recht das es unter Garantie sinnvoller wäre ;)