HTML Webrequest Response nur als Fragezeichen dargestellt

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von enIking1998.

    HTML Webrequest Response nur als Fragezeichen dargestellt

    EDIT://
    Folgendes habe ich jetzt nun schon ausprobiert :
    Encoding.UTF8
    HTMLDecode
    ContentType ändern

    - alles ohne erfolg


    EDIT:// 24.05.2013
    Hab die Seite hinzugefügt und meinen ganzen Source.
    ------------------------------------
    Hey wieder ein kleines Problem oder villeicht auch ein größeres von mit :
    Ich hole mir per HttpWebrequest einen Quellcode von einer Website(KLICK) den Zerlege ich dann mit RegEx um die Titel und Links des Forums(vom Link) zu bekommen, in meinem "Response"-String sind jetzt aber alle Sonderzeichen und Umlaute als Ein Fragezeichen-Symbol dargestellt:
    EDIT:// Der heruntergeladene Source ist bereits falsch kodiert ich habe mir den Text mal speichern lassen und hatte dann schon direkt diese komischen Zeichen
    [Es geht hauptsächlich um die Funktion RefreshNews]
    Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Imports System.Net
    3. Imports System.Text
    4. Imports System
    5. Imports System.Web
    6. Imports System.IO
    7. Public Class Form1
    8. Dim Threads(0 To 100) As String
    9. Dim Index As Integer = 0
    10. Private Sub GhostTheme1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GhostTheme1.Click
    11. End Sub
    12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    13. For Each c As Control In GhostTabControl1.Controls
    14. MsgBox(c.Name)
    15. Next
    16. End Sub
    17. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    18. TabPage1.Controls.Clear()
    19. End Sub
    20. Sub RefreshNews(ByVal Target As String)
    21. Dim Request As HttpWebRequest = CType(WebRequest.Create(Target), HttpWebRequest)
    22. Request.Method = "POST"
    23. Request.ContentType = "text/html; charset=ISO-8859-1"
    24. Dim Post As String = ""
    25. Encoding.GetEncoding("ISO-8859-1")
    26. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    27. Request.ContentLength = byteArray.Length
    28. Dim DataStream As Stream = Request.GetRequestStream()
    29. DataStream.Write(byteArray, 0, byteArray.Length)
    30. DataStream.Close()
    31. Dim Response As HttpWebResponse = Request.GetResponse()
    32. DataStream = Response.GetResponseStream()
    33. Dim reader As New StreamReader(DataStream)
    34. Dim ServerResponse As String = reader.ReadToEnd()
    35. reader.Close()
    36. DataStream.Close()
    37. Response.Close()
    38. Dim NewsHTML As String = ServerResponse
    39. Dim start As String = "<!-- show threads -->"
    40. Dim start_int As Integer = NewsHTML.IndexOf("<!-- show threads -->")
    41. Dim end_int As Integer = NewsHTML.IndexOf("<!-- end show threads -->")
    42. Dim Threads As String = NewsHTML.Substring(start_int + start.Length, end_int - start_int)
    43. Threads = Threads.Replace(Environment.NewLine, "")
    44. Dim r As New Regex("<tr>(.*?)</tr>")
    45. Dim div_ex As New Regex("<div>(.*?)</div>")
    46. Dim ac_ex As New Regex("</span>(.*?)</div>")
    47. Dim url_ex_ref As New Regex("</span>(.*?)>(.*?)</a>")
    48. Dim url_ac As New Regex("<a href(.*?)id")
    49. Dim name_ex As New Regex(""">(.*?)</a>")
    50. Dim matches As MatchCollection = r.Matches(Threads)
    51. For Each m As Match In matches
    52. Dim ma As MatchCollection = div_ex.Matches(m.ToString)
    53. For Each maa As Match In ma
    54. Dim ac_ma As MatchCollection = ac_ex.Matches(maa.ToString)
    55. For Each ac_ma_m As Match In ac_ma
    56. Dim url_ref_ma As MatchCollection = url_ex_ref.Matches(ac_ma_m.ToString)
    57. For Each url_ref_ma_m As Match In url_ref_ma
    58. Dim url_ac_ma As MatchCollection = url_ac.Matches(url_ref_ma_m.ToString)
    59. For Each url_ac_ma_m As Match In url_ac_ma
    60. Dim url_ac_ma_m_string As String = url_ac_ma_m.ToString.Replace("<a href=""", "")
    61. url_ac_ma_m_string = url_ac_ma_m_string.Replace(""" id", "")
    62. Dim name_ex_ma As MatchCollection = name_ex.Matches(url_ref_ma_m.ToString)
    63. For Each name_ex_ma_m As Match In name_ex_ma
    64. Dim name_ex_ma_m_string As String = name_ex_ma_m.ToString.Replace(""">", "")
    65. name_ex_ma_m_string = name_ex_ma_m_string.Replace("</a>", "")
    66. MsgBox(url_ac_ma_m_string & ":::" & name_ex_ma_m_string)
    67. AddThread(url_ac_ma_m_string, name_ex_ma_m_string)
    68. Next
    69. Next
    70. Next
    71. Next
    72. Next
    73. Next
    74. End Sub
    75. Sub AddThread(ByVal URL As String, ByVal text As String)
    76. Threads(Index) = URL & "::" & text
    77. Index = Index + 1
    78. End Sub
    79. Sub AddElements()
    80. Dim TotalLocation_X As Integer = 15
    81. Dim TotalLocation_Y As Integer = 10
    82. For i As Integer = 0 To Threads.Length - 1
    83. If Not Threads(i) = "" Then
    84. Dim r As New Regex("(.*?)::")
    85. Dim rm As MatchCollection = r.Matches(Threads(i))
    86. Dim rm1 As MatchCollection = r.Matches(Threads(i))
    87. For Each rm_m As Match In rm
    88. Dim label As New Label
    89. label.Name = "l_" & i
    90. label.ForeColor = Color.White
    91. label.Size = New Size(300, 50)
    92. label.BackColor = Color.Transparent
    93. label.AccessibleDescription = rm_m.ToString.Replace("::", "")
    94. For Each rm_m1 As Match In rm1
    95. label.Text = Threads(i).ToString.Replace(rm_m.ToString, "")
    96. Next
    97. Dim myFont = New Font("BankGothic Lt BT", 16, FontStyle.Regular)
    98. label.Font = myFont
    99. label.Location = New Point(TotalLocation_X, TotalLocation_Y)
    100. TotalLocation_Y = TotalLocation_Y + 20
    101. TabPage1.Controls.Add(label)
    102. Clipboard.SetText(label.Text)
    103. AddHandler label.Click, AddressOf LabelClicked
    104. Next
    105. Else
    106. Exit For
    107. End If
    108. Next
    109. End Sub
    110. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    111. End Sub
    112. Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click
    113. End Sub
    114. Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    115. For i As Integer = 0 To Threads.Length - 1
    116. If Not Threads(i) = "" Then
    117. Threads(i) = ""
    118. Else
    119. Exit For
    120. End If
    121. Next
    122. Button1.Enabled = False
    123. Index = 0
    124. RefreshNews(TextBox1.Text)
    125. Button1.Enabled = True
    126. AddElements()
    127. End Sub
    128. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    129. End Sub
    130. Private Sub LabelClicked(ByVal sender As Object, ByVal e As EventArgs)
    131. Process.Start(CType(sender, Label).AccessibleDescription.ToString)
    132. End Sub
    133. End Class


    Screen :


    Ich habe bereits versucht das Encoding zu ändern leider ohne erfolg über Hilfe wäre ich sehr dankbar

    LG Graphic

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Graphicscore“ ()

    Versuche es mal mit Encoding.UTF8.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    programmer71 schrieb:

    @Graphicscore

    Da stimmt was mit deinem Encoding nicht! Ist das auf UTF-8?
    Denn du gibst hier ASCII an.

    VB.NET-Quellcode

    1. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)

    Es war auf UTF-8 und hat nicht funktioniert deswegen habe ich es auf ASCII gestellt dies scheint ja aber auch nicht zu funktionieren.