Httpwebrequest Cookies zulassen

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Maximilian1989.

    Httpwebrequest Cookies zulassen

    Ich versuche grade, einen Httpwebrequest zu machen und kriege dabei die Meldung, dass Cookies zugelassen werden müssen. Nun hab ich einen Cookiecontainer und diesen dem Request zugeordnet doch kriege Ich immernoch diese Meldung.
    Google spuckt mir auch nichts brauchbares aus sondern immer nur den selben (nichtfunktionierenden) mist.

    Also, wie lasse ich Cookies bei einem Request zu?
    Wie hast du das denn realisiert? Ich bastel an einem ähnlichen Problem, ich hätte den Cookie aber lieber im webclient...

    VB.NET-Quellcode

    1. Dim client As New webclient
    2. Dim defaultProxy As IWebProxy = WebRequest.DefaultWebProxy
    3. If defaultProxy IsNot Nothing Then
    4. defaultProxy.Credentials = CredentialCache.DefaultCredentials
    5. client.Proxy = defaultProxy
    6. End If
    7. client.Headers.Add("Authorization", "GoogleLogin auth=" + a_code)
    8. Dim plentries As String = client.DownloadString(url)


    Nun sollte ich da auch einen Cookie abholen und diesen später an wieder an eine andere URL übergeben.
    : NV Updater | Nvidia Driver Update Tool
    Mit einem Webclienten kann man keine Cookies speichern soviel ich weiß, probiers mit einem Httpwebrequest, erstmal einen GET Request an die Seite von der du die Cookies brauchst (Cookiecontainer global deklarieren), anschliessend halt das was du vorhast mit dem Cookiecontainer den du in dem GET Request benutzt hast.
    Ich habe mal einen Test mit Google.de gemacht, und dafür sowohl den Webbrowser-Control als auch ein GET-Request genutzt, beide liefern mir das selbe Cookie (vom Aufbau, nicht vom Inhalt):

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. WebBrowser1.Navigate("http://www.google.de")
    3. Dim cookieCon As New CookieContainer
    4. Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create("http://www.google.de"), HttpWebRequest)
    5. request.CookieContainer = cookieCon
    6. Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    7. Dim rstream As Stream = response.GetResponseStream
    8. Dim reader As IO.StreamReader = New StreamReader(rstream)
    9. Dim pagestream As New StringBuilder
    10. Do Until reader.EndOfStream
    11. pagestream.AppendLine(reader.ReadLine)
    12. Loop
    13. 'Me.RichTextBox1.Text = pagestream.ToString
    14. Dim Headers As WebHeaderCollection = response.Headers
    15. For i As Integer = 0 To Headers.Count - 1
    16. If Headers.GetKey(i) = "Set-Cookie" Then
    17. RichTextBox1.AppendText(Headers.Get(i).ToString)
    18. End If
    19. Next
    20. End Sub
    21. Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
    22. RichTextBox2.Text = WebBrowser1.Document.Cookie()
    23. End Sub



    Kann das jemand bestätigen,so sollte es doch funktionieren, das man das Cookie des Webbrowser-Controls abruft.