WebClient QueryString wirkungslos

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    WebClient QueryString wirkungslos

    Hi,
    ich habe ein Problem beim Herunterladen des Quellcodes einer Internetseite. Dabei bin ich mir nicht sicher, ob es an meinem Code, dem WebClient oder der Seite selbst liegt, dass es nicht richtig funktioniert.

    Ich möchte den Quellcode dieser Seite herunterladen: http://worldoftanks.eu/news?language=de
    Wie man an der URL sieht, geht es mir um die deutsche Ausgabe der Seite. Der heruntergeladene Quellcode ist aber immer der englische, also von worldoftanks.eu/news oder worldoftanks.eu/news?language=en.

    Folgendes habe ich versucht:

    VB.NET-Quellcode

    1. wc.QueryString.Add("language", "de")
    2. wc.DownloadStringAsync(New Uri("http://worldoftanks.eu/news"))

    VB.NET-Quellcode

    1. wc.DownloadStringAsync(New Uri("http://worldoftanks.eu/news?language=de"))


    keine von beiden Varianten funktioniert. Liegt das an meinem Code oder an der Seite?

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Huhu,

    das Problem liegt wohl an den Cookies. So hab ich es lösen können:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim hReq As HttpWebRequest = DirectCast(HttpWebRequest.Create("http://worldoftanks.eu/news?language=de"), HttpWebRequest)
    3. Dim hRes As HttpWebResponse = Nothing
    4. Dim sR As StreamReader = Nothing
    5. Dim html As String = ""
    6. Dim cookies As New CookieContainer()
    7. hReq.CookieContainer = cookies
    8. hRes = DirectCast(hReq.GetResponse(), HttpWebResponse)
    9. sR = New StreamReader(hRes.GetResponseStream())
    10. html = sR.ReadToEnd()
    11. sR.Close()
    12. hRes = Nothing
    13. hReq = Nothing
    14. System.IO.File.WriteAllText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\test.txt", html)
    15. End Sub
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Danke, damit gehts. Auf Cookies wäre ich nie gekommen. ^^
    Ich habe jetzt doch den WebClient genutzt, weil man den so bequem asynchron nutzen kann.
    Sieht dann so aus:

    VB.NET-Quellcode

    1. Private WithEvents wc As New CookieAwareWebClient
    2. wc.DownloadStringAsync(New Uri("http://worldoftanks.eu/news?language=de"))

    VB.NET-Quellcode

    1. Public Class CookieAwareWebClient
    2. Inherits WebClient
    3. Private ReadOnly m_container As New CookieContainer()
    4. Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
    5. Dim request As WebRequest = MyBase.GetWebRequest(address)
    6. Dim webRequest As HttpWebRequest = TryCast(request, HttpWebRequest)
    7. If webRequest IsNot Nothing Then
    8. webRequest.CookieContainer = m_container
    9. End If
    10. Return request
    11. End Function
    12. End Class

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „vb-checker“ ()