API Abfrage

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    API Abfrage

    Hallo. Ich habe einen kleinen Telemetry Server der mir ständig wechselnde Daten ausgibt. Diese sollen überwacht werden und bei Änderungen in eine DB geschrieben werden.
    Den Teil mit der DB habe ich hinbekommen aber wie lese ich die Daten von einer API Abfrage aus ?
    Die Daten kommen von der lokalen Adresse 127.0.0.1:25555/api/ets2/telemetry
    uns sehen so aus wie im Anhang.

    Kann mir da jemand auf die Sprünge helfen ??

    *Topic verschoben*
    Bilder
    • 22.png

      12,64 kB, 439×327, 288 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hier der Response:

    Spoiler anzeigen
    {"game":{"connected":true,"gameName":"ETS2","paused":false,"time":"0022-02-03T04:48:00Z","timeScale":3.0,"nextRestStopTime":"0001-01-01T08:59:00Z","version":"1.13","telemetryPluginVersion":"9"},"truck":{"id":"mercedes","make":"Mercedes-Benz","model":"New Actros","speed":2.28098838E-06,"cruiseControlSpeed":0.0,"cruiseControlOn":false,"odometer":10134.0586,"gear":0,"displayedGear":0,"forwardGears":6,"reverseGears":1,"shifterType":"hshifter","engineRpm":0.0,"engineRpmMax":2300.0,"fuel":1332.932,"fuelCapacity":1400.0,"fuelAverageConsumption":0.462759078,"fuelWarningFactor":0.15,"fuelWarningOn":false,"wearEngine":0.002560015,"wearTransmission":0.0025600146,"wearCabin":1.48194956E-09,"wearChassis":1.852437E-09,"wearWheels":0.0255996939,"userSteer":-2.572783E-06,"userThrottle":0.0,"userBrake":0.0,"userClutch":0.0,"gameSteer":-2.572783E-06,"gameThrottle":1.401298E-45,"gameBrake":0.0,"gameClutch":0.0,"shifterSlot":0,"engineOn":false,"electricOn":false,"wipersOn":false,"retarderBrake":0,"retarderStepCount":3,"parkBrakeOn":true,"motorBrakeOn":false,"brakeTemperature":17.5394554,"adblue":86.6466,"adblueCapacity":90.0,"adblueAverageConsumption":0.0,"adblueWarningOn":false,"airPressure":148.991135,"airPressureWarningOn":false,"airPressureWarningValue":80.04,"airPressureEmergencyOn":false,"airPressureEmergencyValue":40.02,"oilTemperature":28.9980011,"oilPressure":27.9172745,"oilPressureWarningOn":false,"oilPressureWarningValue":10.15,"waterTemperature":18.7098484,"waterTemperatureWarningOn":false,"waterTemperatureWarningValue":105.0,"batteryVoltage":23.8361053,"batteryVoltageWarningOn":true,"batteryVoltageWarningValue":22.0,"lightsDashboardValue":1.0,"lightsDashboardOn":true,"blinkerLeftActive":false,"blinkerRightActive":false,"blinkerLeftOn":false,"blinkerRightOn":false,"lightsParkingOn":true,"lightsBeamLowOn":true,"lightsBeamHighOn":true,"lightsAuxFrontOn":false,"lightsAuxRoofOn":false,"lightsBeaconOn":false,"lightsBrakeOn":false,"lightsReverseOn":false,"placement":{"x":170073.234,"y":52.9784,"z":81119.51,"heading":0.09997206,"pitch":-7.376604E-05,"roll":-3.79454939E-08},"acceleration":{"x":3.539376E-07,"y":-0.00015633092,"z":-7.43283772E-06},"head":{"x":-0.717515469,"y":1.32228923,"z":-0.1536789},"cabin":{"x":3.7017E-16,"y":1.5,"z":-1.8},"hook":{"x":0.0,"y":1.0,"z":1.45}},"trailer":{"attached":false,"id":"","name":"","mass":0.0,"wear":0.0,"placement":{"x":0.0,"y":0.0,"z":0.0,"heading":0.0,"pitch":0.0,"roll":0.0}},"job":{"income":0,"deadlineTime":"0001-01-01T00:00:00Z","remainingTime":"0001-01-01T00:00:00Z","sourceCity":"","sourceCompany":"","destinationCity":"","destinationCompany":""},"navigation":{"estimatedTime":"0001-01-01T00:00:00Z","estimatedDistance":0,"speedLimit":0}}


    *Spoiler eingefügt* ~NoFear23m

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

    Hallo

    Das ist ein JSon Formatierter String.

    Sieh dir mal das NuGet Packet JSonNet an. Damit gehts schnell und unkompliziert.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ok das habe ich jetzt so gelöst:

    VB.NET-Quellcode

    1. Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://127.0.0.1:25555/api/ets2/telemetry"), HttpWebRequest)
    2. Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    3. Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
    4. Dim o As JObject = JObject.Parse(reader.ReadToEnd)



    Die daten speichere ich dann über

    VB.NET-Quellcode

    1. Dim truck_gear As String = o("truck")("gear")


    uns lade sie über

    VB.NET-Quellcode

    1. Me.WebBrowser1.Navigate("http://webite/test.php?client_key=" + client_key + "&game_name=" + game_name + "&truck_gear=" + truck_gear)


    an den Server.
    Da dies aber ohne Pause den Prozessor sehr auslastet, müsste da ein Abfrage rein ob sich die Daten geändert haben.
    Wenn ich eine Pause mit sleep verwende, lädt er die form erst garnicht.

    *Codetags korrigiert* ~NoFear23m

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „thommy1972de“ ()

    thommy1972de schrieb:

    Wenn ich eine Pause mit sleep verwende, lädt er die form erst garnicht.

    Weil der UI Thread blockiert wird.

    Schau dir mal Async/Await an.

    PS: Bitte die richtigen CodeTags verwenden. Danke.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    Und? Was soll uns/dir deine Antwort nun bringen?
    Du musst das eben lernen. Das ist wichtig. Wenn du Codepassagen nicht verstehst dann guckst du im Netz danach. Sollte es immer noch nicht klarere werden kann man hier gezielt nachfragen.
    Ohne zu lernen wirst du nicht weit kommen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##