Webbrowser Cookies an WebClient übergeben

  • VB.NET
  • .NET (FX) 4.5–4.8

    Webbrowser Cookies an WebClient übergeben

    Guten Abend zam,

    ich versuch gerade mal die Cookies die ich durch Aktionen, Anmeldungen usw. im WebBrowser-Control bekommen habe auf meinen WebClient zu übertragen, bzw. weiterzugeben.

    Mein Code

    VB.NET-Quellcode

    1. Dim cookies = wbMain.Document.Cookie.Split(";"c)
    2. Dim cookiejar = New CookieContainer()
    3. For Each c As String In cookies
    4. Dim nameandvalue = c.Split("="c)
    5. cookiejar.Add(New Cookie(nameandvalue(0), nameandvalue(1), "/", ""))
    6. Next
    7. Using w As New CookieAwareWebClient(cookiejar)
    8. End Using

    WebClient

    VB.NET-Quellcode

    1. Public Class CookieAwareWebClient
    2. Inherits WebClient
    3. Public Property CookieContainer() As CookieContainer
    4. Get
    5. Return m_CookieContainer
    6. End Get
    7. Set
    8. m_CookieContainer = Value
    9. End Set
    10. End Property
    11. Private m_CookieContainer As CookieContainer
    12. Public Property Uri() As Uri
    13. Get
    14. Return m_Uri
    15. End Get
    16. Set
    17. m_Uri = Value
    18. End Set
    19. End Property
    20. Private m_Uri As Uri
    21. Public Sub New()
    22. Me.New(New CookieContainer())
    23. End Sub
    24. Public Sub New(cookies As CookieContainer)
    25. Me.CookieContainer = cookies
    26. End Sub
    27. Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
    28. Dim request As WebRequest = MyBase.GetWebRequest(address)
    29. If TypeOf request Is HttpWebRequest Then
    30. TryCast(request, HttpWebRequest).CookieContainer = Me.CookieContainer
    31. End If
    32. Dim httpRequest As HttpWebRequest = DirectCast(request, HttpWebRequest)
    33. httpRequest.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate
    34. Return httpRequest
    35. End Function
    36. Protected Overrides Function GetWebResponse(request As WebRequest) As WebResponse
    37. Dim response As WebResponse = MyBase.GetWebResponse(request)
    38. Dim setCookieHeader As [String] = response.Headers(HttpResponseHeader.SetCookie)
    39. If setCookieHeader IsNot Nothing Then
    40. 'do something if needed to parse out the cookie.
    41. If setCookieHeader IsNot Nothing Then
    42. Dim cookie As New Cookie()
    43. 'create cookie
    44. Me.CookieContainer.Add(cookie)
    45. End If
    46. End If
    47. Return response
    48. End Function
    49. End Class


    Doch leider bekomme ich den angehangenen Fehler bei der DownloadFile-Methode.

    Geprüft ob alle names & values befüllt sind habe ich.

    EDIT:
    Und wenn ich den WebBrowser (da er die Cookies ja hat) einfach direkt die (getestete und funktionierende) URL besuchen lasse (wo ein Download starten sollte), kommt dann Problem aus Bild 2.
    Leer, nicht anwählbar, keinen Dateinamen, ??

    Die Google Suche ergab sonst noch folgendes -> Man solle die InternetGetCookieEx-Methode verwenden, aber das bekomme ich nicht so ganz hin :/.

    Bilder
    • cooki prob.PNG

      19 kB, 851×134, 103 mal angesehen
    • wb download prob.PNG

      28,34 kB, 791×524, 100 mal angesehen
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Rootbob91“ ()