HttpWebRequest / HttpWebResponse - URL einer weiterleitung abfangen, aber wie ?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Treves.

    HttpWebRequest / HttpWebResponse - URL einer weiterleitung abfangen, aber wie ?

    Hallo VB-Paradise Community,

    ich Arbeite im moment an einem Programm was bestimmte Zeilen von einer Webseite mittels HttpWebRequest & Regex ausliest.

    Problem:
    Das HttpWebRequest.Create(URL) leitet auf eine andere Seite weiter und genau von dieser benötige ich die URL. :cursing:
    Wie kann man am geschicktesten diese URL abfragen/auslesen ?

    Mfg Treves
    Ich verstehe nicht ganz Dein Problem: der Request übernimmt ja selber automatisch alle Umleitungen, sofern man es nicht explizit per .AllowAutoDirect = False verhindert. In diesem Fall kommt ggf. der StatusCode Moved und die Weiterleitungsadresse steht im Location Header. Diesen kann man dann mit Response.Headers.GetValues("location")(0)) auslesen.
    Danke für die recht fixe Antwort...
    Also... mit Response.Headers.GetValues("location")(0) bleibt meine Textbox leer ...


    Wenn ich "location" zu "age" ändere, bekomme ich eine 0 angezeigt (scheint also zu funktionieren)


    Ich hab die URL meiner ausgangsseite mal mittels HTTP Header auslesen für Alle gecheckt.
    Dort wird mir die Location (URL) komischerweise angezeigt 8|



    Code-Schnipsel zum nachschauen und selber Testen:

    VB.NET-Quellcode

    1. Imports System.Data.OleDb, System.Net, System.Text, System, System.IO, System.Text.RegularExpressions
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim Quelltext_EN As String = ""
    5. Dim itemname_en As String = "Cadet%20Boots"
    6. Dim item_url_en As String = "http://wowhead.com/search?q=" & itemname_en
    7. Try
    8. Dim Request As HttpWebRequest = HttpWebRequest.Create(item_url_en)
    9. Dim Response As HttpWebResponse = Request.GetResponse()
    10. TextBox1.Text = Response.Headers.GetValues("location")(0)
    11. Dim IO As StreamReader = New StreamReader(Response.GetResponseStream)
    12. Quelltext_EN = IO.ReadToEnd
    13. Response.Close()
    14. Catch
    15. End Try
    16. End Sub
    17. End Class




    Wo liegt der Fehler ? ?(

    Kangaroo schrieb:

    Steht alles in meiner ersten Antwort, mal nachdenken:
    - warum willst Du die location wenn der HttpWebRequest selber die Umleitungen automatisch abarbeitet
    - der location Header hat nur einen Inhalt wenn einer der Moved StatusCodes 3xx kommt -> HTTP-Statuscodes

    Warum ich die URL von der weitergeleiteten Webseite haben möchte, obwohl HttpWebRequest es automatisch abarbeitet ?
    Würde ich sie für mein vorhaben nicht benötigen, würde ich nicht fragen wie man sie ausliest... :huh:
    Aber um es dir verständlicher zu machen, warum ich die URL der Webseite brauche auf die weitergeleitet wurde:
    Wenn ich http://wowhead.com/search?q=Cadet%20Boots aufrufe, wird umgeleitet auf wowhead.com/item=9759.
    Ich benötige den item-link aus der URL (/item=9759).
    Den Item-Link kann man nun an die DE-Webadresse von wowhead setzen (http://de.wowhead.com/item=9759) und das resultat ist der Gegenstand auf Deutsch: Kadettenstiefel...

    Deshalb brauch ich die URL obwohl HttpWebRequest es automatisch abarbeitet... 8|

    Aber es hat sich mitlerweile erledigt, da ich einen anderen weg gefunden habe es zu realisieren...
    Dennoch vielen Dank für die Aufmersamkeit.