tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1966
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Hi, ich wollte mit folgender Funktion meine WebRequests machen.
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    Dim cookieContainer As CookieContainer = New CookieContainer()
     
        Private Function Request(ByVal URL as String, ByVal PostData as String) as String
            Dim request As HttpWebRequest
            Dim response As HttpWebResponse
            Dim str, str2 As IO.Stream
     
            Dim buffer As String
     
            Dim data As Byte() = System.Text.Encoding.ASCII.GetBytes(PostData) 
     
            request = Net.WebRequest.Create(URL)
            request.CookieContainer = cookieContainer
            request.Method = "POST"
            request.Accept = "*/*"
     
            request.Headers.Add(Net.HttpRequestHeader.AcceptLanguage, "de")
            request.Headers.Add("UA-CPU", "x86")
            request.Headers.Add(Net.HttpRequestHeader.AcceptEncoding, "gzip, deflate")
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) "
     
            request.ContentType = "application/x-www-form-urlencoded"
            request.ContentLength = data.Length
     
            str2 = request.GetRequestStream()
            str2.Write(data, 0, data.Length)
            str2.Close()
     
            response = request.GetResponse
            str = response.GetResponseStream()
     
            If response.Cookies IsNot Nothing AndAlso response.Cookies.Count <> 0 Then
                For Each cookie As Cookie In response.Cookies
                    MessageBox.Show(cookie.ToString)
                Next
            Else
                ' No cookie
            End If
     
            If (response.ContentEncoding.ToLower().Contains("gzip")) Then
                str = New IO.Compression.GZipStream(str, IO.Compression.CompressionMode.Decompress)
            ElseIf (response.ContentEncoding.ToLower().Contains("deflate")) Then
                str = New IO.Compression.DeflateStream(str, IO.Compression.CompressionMode.Decompress)
            End If 'Fall der Server die Page in GZIP / Deflate zurück gibt dann habt hier einen Decoder 
     
            buffer = New IO.StreamReader(str, System.Text.Encoding.ASCII).ReadToEnd 
            return buffer
        End Function

    Wenn ich damit eine Abfrage mache bekomme ich zwar den Quelltext und die Cookies der Seite ausgegeben nur würde ich die Cookies auch gerne weiter verwenden. Also das ich z.B. eine Abfrage machen zum einloggen, dann den Cookie anlege und danach mit dem Cookie weitere abfragen machen kann.
     

  2. #2
    Avatar von Konstantin Denerz
    Konstantin Denerz Konstantin Denerz ist offline Mitglied Bronze
    Registriert seit
    Feb 2009
    Ort
    Eppelborn
    Beiträge
    39
     

  3. #3
    Thau Thau ist offline Mitglied Bronze
    Registriert seit
    Mar 2007
    Beiträge
    32
    Hab jetzt noch weiter rumprobiert, aber es geht och immer nicht.

    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    
    'Dim cookieContainer As CookieContainer = New CookieContainer()
        Dim cookieContainer As New CookieCollection()
     
     
    Public Function InfoRequest(ByVal URL As String, ByVal PostData As String) As String
            Dim request As HttpWebRequest
            Dim response As HttpWebResponse
            Dim str, str2 As IO.Stream
     
            Dim buffer As String
     
            Dim data As Byte() = System.Text.Encoding.ASCII.GetBytes(PostData) 
            request = Net.WebRequest.Create(URL)
            'request.CookieContainer = cookieContainer
     
            request.CookieContainer = New CookieContainer()
     
            Try
                request.CookieContainer.Add(cookieContainer)
            Catch exp As Exception
                MessageBox.Show("kein cookie übergeben")
            End Try
            request.Method = "POST"
            request.Accept = "*/*"
     
            request.Headers.Add(Net.HttpRequestHeader.AcceptLanguage, "de")
            request.Headers.Add("UA-CPU", "x86")
            request.Headers.Add(Net.HttpRequestHeader.AcceptEncoding, "gzip, deflate")
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) "
     
            request.ContentType = "application/x-www-form-urlencoded"
            request.ContentLength = data.Length
     
            str2 = request.GetRequestStream()
            str2.Write(data, 0, data.Length)
            str2.Close()
     
            response = request.GetResponse
            str = response.GetResponseStream()
     
            If response.Cookies IsNot Nothing AndAlso response.Cookies.Count <> 0 Then
                For Each cookie As Cookie In response.Cookies
                    MessageBox.Show(cookie.ToString)
                    cookieContainer = response.Cookies
                Next
            Else
                MessageBox.Show("no Cookie")
            End If
     
            If (response.ContentEncoding.ToLower().Contains("gzip")) Then
                str = New IO.Compression.GZipStream(str, IO.Compression.CompressionMode.Decompress)
            ElseIf (response.ContentEncoding.ToLower().Contains("deflate")) Then
                str = New IO.Compression.DeflateStream(str, IO.Compression.CompressionMode.Decompress)
            End If
     
            buffer = New IO.StreamReader(str, System.Text.Encoding.UTF8).ReadToEnd 
     
            Return buffer
        End Function
     

  4. #4
    Avatar von Konstantin Denerz
    Konstantin Denerz Konstantin Denerz ist offline Mitglied Bronze
    Registriert seit
    Feb 2009
    Ort
    Eppelborn
    Beiträge
    39
    Hi,

    was funktioniert denn bei dir nicht?
    Kriegst du bei dem ersten Aufruf Cookies zurück? (Hat dein Responseobjekt überhaupt Cookies?)

    Gruß Konstantin
     

  5. #5
    kwmaster kwmaster ist offline Mitglied
    Registriert seit
    Dec 2007
    Beiträge
    21
    Habe da ein ähnliches Problem.

    bei request.coociecontainer wird ein count = 5 angezeigt (sollte doch bedeuten, dass es hier 5 cookies gibt, oder?)

    bei response.cookie (wenn ich diese über "for each..." auslesen will, wird nichts mehr angezeigt...

    Irgendwie verstehe ich das System nicht.

    Eigentlich will ich mich nur bei einer Webseite einloggen und bei den nächsten POST-Requests die Cookies wieder mitsenden...

    Gruß

    Kai
     
    Hat man ein Problem gelöst, tauchen neue auf...

Ähnliche Themen

  1. Problem mit Webrequest
    Von kerstel im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 27.07.09, 20:09
  2. [C#] Webrequest, Cookie anhängen
    Von awaiK im Forum .NET Web und Kommunikation
    Antworten: 2
    Letzter Beitrag: 18.03.08, 13:20
  3. WebRequest - Login
    Von martinpriebe im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 14.03.08, 14:57
  4. Frage zu WebRequest
    Von andreas_gierisch im Forum .NET Web und Kommunikation
    Antworten: 8
    Letzter Beitrag: 13.07.07, 11:18
  5. C# Webrequest + Cookie via CookieCollection Emtpy Value Problem
    Von Devilzimti im Forum .NET Web und Kommunikation
    Antworten: 0
    Letzter Beitrag: 17.03.07, 17:02