Double Error beim Aufrufen einer Website

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von CodingCore.

    Double Error beim Aufrufen einer Website

    Hey :D

    Ich schreibe grade etwas wo bei beim Buttonclick Event ein Webbrowser auf eine Seite mit Login script navigieren soll.
    Es kommt aber immer dieser Error.
    Kann mir da jemand helfen?
    Bilder
    • Screenshot_1.png

      12,19 kB, 559×318, 143 mal angesehen
    Ich führe nur einen normalen wb.navigate aus aber dann kommt dieser Error immer wieder...
    Keine Ahnung weshalb

    Mit

    VB.NET-Quellcode

    1. ​Dim url as String = "wert"


    Hab ich es versucht geht aber auch nicht. Da kommt die selbe Fehlermeldung.
    Bilder
    • Screenshot_2.png

      28,56 kB, 1.354×423, 113 mal angesehen
    Zeig mal den ganzen Code von deinem Click Event.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Zeig mal den ganzen Code von deinem Click Event.



    VB.NET-Quellcode

    1. ​Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim result As String = ""
    3. wb.Navigate("http://www.example.com/login.php?action=login&username=" + TextBox1.Text + "&password=" + getHashFromString(TextBox2.Text) + "&hwid=" + getHashFromString(hwid))
    4. WaitForPageLoad()
    5. result = wb.DocumentText
    6. If result = "1" Then
    7. MsgBox("Yes")
    8. Else
    9. MsgBox("No")
    10. End If
    11. End Sub



    Cheffboss schrieb:

    Prüfe ob die URL richtig ist, öffne diese mit einem Browser.
    Vieleicht ist nur, die URL falsch!


    URL ist Richtig :/

    VB.NET-Quellcode

    1. Private Function ReadHTML(strAdress As String) As String
    2. Dim strReturn As String = ""
    3. Dim objRequest As WebRequest
    4. Dim objResponse As WebResponse
    5. Dim objStreamReader As StreamReader
    6. objRequest = WebRequest.Create(strAdress)
    7. objResponse = objRequest.GetResponse
    8. objStreamReader = New StreamReader(objResponse.GetResponseStream)
    9. strReturn = objStreamReader.ReadToEnd
    10. objStreamReader.Close()
    11. Return strReturn
    12. End Function
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Try
    15. Dim strResult As String = Nothing
    16. strResult = ReadHTML("https://foobar.example/yourHTMLSite.html")
    17. If strResult = "1" Then
    18. MsgBox("Yes")
    19. Else
    20. MsgBox("No")
    21. End If
    22. Catch ex As Exception
    23. mobjGlobalEventHandler.GeneralException(ex)
    24. End Try
    25. End Sub

    Funktioniert. Wenn du es unbedingt als Int brauchst, musst du dir die Function halt eben umschreiben. :)

    mrMo schrieb:

    Nimm mal testweise ne andere URL.
    Habe es bei mir auch mit seinem Code und mehreren URL's probiert. Funktionierte nicht, habe es nicht näher getracked.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Toorms“ ()

    Toorms schrieb:

    Habe es bei mir auch mit seinem Code und mehreren URL's probiert. Funktionierte nicht, habe es nicht näher getracked.


    Wo knallt es da? Beim .Navigate? Ist das der normale Webbrowser?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Was passiert hier:
    - WaitForPageLoad
    - getHashFromString

    Woher kommen diese Methoden? Mein VS kennt die nicht. Nehme ich google.de als url und schmeiße WaitForPageLoad raus, läuft der Code ohne Fehlermeldung.

    Gibts sonst noch Code der durch Events des Browsers ausgeführt wird?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Was passiert hier:
    - WaitForPageLoad
    - getHashFromString


    Ich muss auch ehrlich sagen, ich habe die beiden Methoden bei mir rausgeschmissen beim Testen und habe nur nach einem reinen String beim Pageload gefragt. Auch ohne Erfolg. Da es bei mir auch nicht funktioniert hat, obwohl ich den String direkt in die HTML vorher geschrieben habe, denke ich nicht, dass es was mit der Methode "getHashFromString" zu tun hat. Was in "WaitForPageLoad" steht, würde mich aber auch interessieren.

    mrMo schrieb:

    Was passiert hier:
    - WaitForPageLoad
    - getHashFromString


    WaitForPageLoad: Es wird darauf gewartet das die Seite vollständig geladen ist.

    VB.NET-Quellcode

    1. Private Property pageready As Boolean = False
    2. #Region "Page Loading Functions"
    3. Private Sub WaitForPageLoad()
    4. AddHandler wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    5. While Not pageready
    6. Application.DoEvents()
    7. End While
    8. pageready = False
    9. End Sub
    10. Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
    11. If wb.ReadyState = WebBrowserReadyState.Complete Then
    12. pageready = True
    13. RemoveHandler wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    14. End If
    15. End Sub
    16. #End Region


    GetHashFromString: Ein String wird gehasht.

    VB.NET-Quellcode

    1. Public Function getBinaryFromChar(c As Char) As Integer
    2. If c.Equals("a"c) Then
    3. Return 1100001
    4. End If
    5. If c.Equals("b"c) Then
    6. Return 1100010
    7. End If
    8. If c.Equals("c"c) Then
    9. Return 1100011
    10. End If
    11. If c.Equals("d"c) Then
    12. Return 1100100
    13. End If
    14. If c.Equals("e"c) Then
    15. Return 1100101
    16. End If
    17. If c.Equals("f"c) Then
    18. Return 1100110
    19. End If
    20. If c.Equals("g"c) Then
    21. Return 1100111
    22. End If
    23. If c.Equals("h"c) Then
    24. Return 1101000
    25. End If
    26. If c.Equals("i"c) Then
    27. Return 1101001
    28. End If
    29. If c.Equals("j"c) Then
    30. Return 1101010
    31. End If
    32. If c.Equals("k"c) Then
    33. Return 1101011
    34. End If
    35. If c.Equals("l"c) Then
    36. Return 1100001
    37. End If
    38. If c.Equals("m"c) Then
    39. Return 1101100
    40. End If
    41. If c.Equals("n"c) Then
    42. Return 1101110
    43. End If
    44. If c.Equals("o"c) Then
    45. Return 1101111
    46. End If
    47. If c.Equals("p"c) Then
    48. Return 1100001
    49. End If
    50. If c.Equals("q"c) Then
    51. Return 1110000
    52. End If
    53. If c.Equals("r"c) Then
    54. Return 1110010
    55. End If
    56. If c.Equals("s"c) Then
    57. Return 1110011
    58. End If
    59. If c.Equals("t"c) Then
    60. Return 1110100
    61. End If
    62. If c.Equals("u"c) Then
    63. Return 1110101
    64. End If
    65. If c.Equals("v"c) Then
    66. Return 1110110
    67. End If
    68. If c.Equals("w"c) Then
    69. Return 1110111
    70. End If
    71. If c.Equals("x"c) Then
    72. Return 1111000
    73. End If
    74. If c.Equals("y"c) Then
    75. Return 1111001
    76. End If
    77. If c.Equals("z"c) Then
    78. Return 1111010
    79. End If
    80. Return 0
    81. End Function
    82. Public Function getHashFromString(plain As String) As Integer
    83. Dim hash As Integer = 0
    84. Dim add As Integer = 0
    85. Dim salt As Integer = 0
    86. For Each c As Char In plain
    87. add += getBinaryFromChar(c)
    88. Next
    89. For Each c As Char In Environment.UserName
    90. salt += getBinaryFromChar(c)
    91. Next
    92. Return (add + salt) / (Environment.UserName.Length + plain.Length)
    93. End Function
    Den letzten Post will ich gar nicht erst inhaltlich bewerten, aber wenn Du Option Strict On nutzen würdest, würde Dir nicht erst zur Laufzeit die Zeile

    VB.NET-Quellcode

    1. wb.Navigate("http://www.example.com/login.php?action=login&username=" + TextBox1.Text + "&password=" + getHashFromString(TextBox2.Text) + "&hwid=" + getHashFromString(hwid))
    um die Ohren fliegen. String + String + String + Integer + String + Integer. Daraus versucht der Compiler mit Hängen und Würgen irgendwas draus zu machen. Und er entscheidet sich für Double. Wenn Deine Funktionen schon Integer zurückgeben, dann mach notfalls eben das draus:

    VB.NET-Quellcode

    1. wb.Navigate("http://www.example.com/login.php?action=login&username=" & TextBox1.Text & "&password=" & getHashFromString(TextBox2.Text).ToString() & "&hwid=" & getHashFromString(hwid)).ToString())
    . Und nutze bei Stringzusammenbau im Zweifelsfall das & statt dem +, sonst macht der Compiler eben eine (Be)Rechnung draus, was dann Mus wird, wie Du gesehen hast.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.