Webrequest funktioniert nicht(Formatierung?)

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Joshi.

    Webrequest funktioniert nicht(Formatierung?)

    Hallo,

    auf dieser Seite kann man sich Vorhersagen zu Fußballspielen anzeigen lassen. Einfach Heimmannschaft und Auswärtsmannschaft eingeben und tadaa! (Zum Verständnis am besten selbst kurz ausprobieren, dauert wirklich keine 10 Sekunden). Das ganze möchte ich nun in mein Programm einbauen d.h. die Wahrscheinlichkeiten dort anzeigen lassen.
    Mit HTTP Header Live hab ich mir dann angesehen was im Hintergrund passiert um zu wissen wie mein Webrequest aussehen muss. Leider funktioniert das nicht (Ich bekomme keine Antwort, wie auf dem screenshot, sondern nur html Quelltext-> screenshot2) :( Möglich ist es aber, wie man auf dem screenshot sieht. Dort habe ich das Request mit der Firefox Erweiterung gesendet und die Antwort erhalten. Wahrscheinlich ist es nur eine Kleinigkeit aber ich komme nicht drauf... Für Hilfe wäre ich sehr dankbar :)

    Mein Code:

    VB.NET-Quellcode

    1. Dim Request As HttpWebRequest = HttpWebRequest.Create("http://www.statarea.com/actions/controller/")
    2. Request.Method = "POST"
    3. 'Request.Proxy = myProxy
    4. Request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
    5. Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
    6. 'Request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")
    7. Dim obj As String = "{" & Chr(34) & "action" & Chr(34) & ":" & Chr(34) & "doCustomPredict" & Chr(34) & "," & Chr(34) & "hostteamname" & Chr(34) & ":" & Chr(34) & "Werder Bremen (Germany)" & Chr(34) & "," & Chr(34) & "guestteamname" & Chr(34) & ":" & Chr(34) & "VfB Stuttgart (Germany)" & Chr(34) & "," & Chr(34) & "factors" & Chr(34) & ":255}"
    8. MessageBox.Show(obj)
    9. Dim Post As String = "object=" & obj
    10. Dim byteArray() As Byte = Encoding.Default.GetBytes(Post)
    11. Request.ContentLength = byteArray.Length
    12. Dim DataStream As Stream = Request.GetRequestStream()
    13. DataStream.Write(byteArray, 0, byteArray.Length)
    14. DataStream.Close()
    15. Dim Response As HttpWebResponse = Request.GetResponse()
    16. DataStream = Response.GetResponseStream()
    17. Dim reader As New StreamReader(DataStream)
    18. Dim ServerResponse As String = reader.ReadToEnd()
    19. reader.Close()
    20. DataStream.Close()
    21. Response.Close()
    22. TextBox1.Text = ServerResponse
    Bilder
    • requeststat.JPG

      113,31 kB, 1.376×917, 155 mal angesehen
    • requeststaterr.JPG

      110,32 kB, 1.386×439, 142 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „super95“ ()

    Setz mal ganz oben:

    VB.NET-Quellcode

    1. Option Strict On


    Ich bekomm als Response:

    HTML-Quellcode

    1. <div class='predictedmatch'><div class='match mobile'><div class='tip'><div class='header'>TIP</div><div class='value'>1X</div></div><div class='matchinfo'><div class='header'><div class='letter'>A</div><div class='letter'>B</div><div class='letter'>C</div><div class='letter'>D</div><div class='letter'>E</div><div class='letter'>F</div><div class='letter'>G</div><div class='letter'>H<div class='none'>&nbsp;</div></div><div class='status'><div class='ok'>&nbsp;</div><span>status</span></div><div class='clearfix left'></div></div><div class='teams'>Werder Bremen - VfB Stuttgart</div></div><div class='clearfix'></div></div><div class='coef'><div class='header'><div class='coefbox'>1</div><div class='coefbox'>X</div><div class='coefbox separate'>2</div><div class='coefbox'>HT1</div><div class='coefbox'>HTX</div><div class='coefbox separate'>HT2</div><div class='coefbox'>1.5</div><div class='coefbox'>2.5</div><div class='coefbox separate'>3.5</div><div class='coefbox'>BTS</div><div class='coefbox'>OTS</div><div class='clearfix'></div></div><div class='coefrow'><div class='coefbox'><div class='value r53'>53</div></div><div class='coefbox'><div class='value r31'>31</div></div><div class='coefbox separate'><div class='value r16'>16</div></div><div class='coefbox'><div class='value b49'>49</div></div><div class='coefbox'><div class='value b37'>37</div></div><div class='coefbox separate'><div class='value b14'>14</div></div><div class='coefbox'><div class='value o94'>94</div></div><div class='coefbox'><div class='value o59'>59</div></div><div class='coefbox separate'><div class='value o45'>45</div></div><div class='coefbox'><div class='value g67'>67</div></div><div class='coefbox last'><div class='value g33'>33</div></div></div></div><div class='match web'><div class='tip'><div class='header'>TIP</div><div class='value'>1X</div></div><div class='matchinfo'><div class='header'><div class='letter'>A</div><div class='letter'>B</div><div class='letter'>C</div><div class='letter'>D</div><div class='letter'>E</div><div class='letter'>F</div><div class='letter'>G</div><div class='letter'>H<div class='none'>&nbsp;</div></div><div class='status'><div class='ok'>&nbsp;</div><span>status</span></div><div class='clearfix left'></div></div><div class='teams'>Werder Bremen - VfB Stuttgart</div></div><div class='clearfix'></div></div><div class='clearfix'></div></div>

    Hi.

    Einfach mal ins blaue hinein...

    Im header, ist "jquery"-Schnickschnack, das heist deine Abfrage wird in HTML und in Javascript gemacht, und als HTML ausgegeben.

    Bei so einer kleinen Antwort (Datenmenge), lohnt sich der aufwand nicht den Header zu analysieren.
    Nimm einfach den "Response" und suche/Splitte den String (Quelltext) an der Stelle "predictionresult".
    Siehe vorheriger Beitrag, und Parse dann die Ergebnisse...

    Wenn es keine API des Webservers gibt, dann halt "Oldschool" mit Textanalyse (Parsen reicht... KI ist viel zu aufwändig ;) ).

    So wie es aussieht, ist alles in "DIV´s" gelegt, und in CSS-Klassen aufgeteilt.

    String.Split("<div") oder mit RegEx, dann die Klassen deinen Eigenschaften zuordnen, und die Werte entsprechend übergeben, falls OO genutzt wird.

    c.u. Joshi