Wie https auslesen

Moin, ich muss mal wieder stören.
Wie stelle ich es an, mit JSON6 Daten von einem https-Server abzurufen?
In diesem Fall Fahrplandaten.

String fahr;
if ((WiFi.status() == WL_CONNECTED)) {
 HTTPClient http;
http.begin("https://rest.busradar.conterra.de/prod/haltestellen/4556102/abfahrten?sekunden=3600");  // https mit json
Serial.println("begin");
int httpCode = http.GET();
Serial.println("GET"); // ok
Serial.println(httpCode); // -1
if (httpCode == 200) {
 Serial.println("200");
 fahr = http.getString();  // rohdaten vom server als String
 Serial.println("fahr");
 Serial.println(fahr);
 
StaticJsonDocument<768> docfahr;

DeserializationError error = deserializeJson(docfahr, fahr);

if (error) {
  Serial.print(F("deserializeJson() failed: "));
  Serial.println(error.f_str());
  return;
}
JsonObject root_0 = docfahr[0];

Wenn ich die Adressdaten direkt in der Browserzeile eingebe, bekomme ich die erwarteten Daten.
Als HTTP-Code bekomme ich im Script  "-1" zurück.

Dein httpClient kann kein HTTPS. Welcher ESP? Suche mal in den Beispielen Deines ESP nach HTTPSRequest.

Gruß Tommy

Ist ein ESP12F, werden noch andere verwendet?
“HTTPSRequest” war das Stichwort, ich belese mich gerade.
Bericht folgt, danke erstmal

Jo, funktioniert. :+1: Fingerprint von der Seite raussuchen, und schon bekommt man die gewünschte Antwort. Leider ist der Schlüssel nicht so ewig gültig, in meinem Fall bis ‎Montag, ‎30. ‎August ‎2021 14:00:00. Ist natürlich für ein Stand-Alone Gerät etwas blöd. Gibt es so ganz zufällig Möglichkeiten den Fingerprint zu erneuern? (Außer Neuprogrammierung)

  1. SD-Karte mit Datei.
  2. Dateisystem LittleFS des ESP8266 mit Datei. Schau mal bei den Tabs von Fips beim Filesystem Manager.

Verstehe, was du meinst. Da das Gerät bei mir im Wohnzimmer steht (stehen würde), kann ich genauso gut OTA machen. Ich dachte in etwa, das sich das System mit dem noch gültigen Fingerprint den Neuen holt, und im EEPROM oder so ablegt.

Mit dem Root-Zertifíkat arbeiten. HTTPSRequest.ino

Gruß Tommy

Danke für den guten Tip. Das Zertifikat “Amazon Root CA 1 gültig bis 17.1.2038” von der Fahrplanseite macht einen brauchbaren Eindruck. Bis das abgelaufen ist, haben die schon dreimal die Datenstruktur geändert, oder wir haben ganz andere Sorgen. Aber wie bekomme ich die wirre Dateistruktur in mein Script? Ich seh da nicht mal ansatzweise passende Daten?

Das steht doch in dem Beispiel drin, einfach übernehmen.

Gruß Tommy

Ne, das meinte ich nicht. Das ist mittlerweile eine Fingerübung. Ich wollte wissen, wie ich aus dem Root-Cerificate lesbare Daten bekomme.

22:00:45.430 -> Current time: Thu May  6 20:00:44 2021
22:00:45.430 -> Connecting to api.github.com
22:00:45.430 -> Using certificate: 
22:00:45.430 -> -----BEGIN CERTIFICATE-----
22:00:45.430 -> MIIE6zCCB.....ZNIZnlY3WFu
22:00:45.568 -> kmxiBWDOpyfJrG9vQ25K
22:00:45.568 -> -----END CERTIFICATE-----
22:00:45.568 -> 
22:00:46.273 -> Connection failed

Ich bekomme das als Antwort.
Wenn ich das soweit richtig verstanden habe, muss ich das Zertifikat von der Seite einbauen, oder reicht irgendein anderes lange gültiges? Da bin ich nicht so richtig hinter gekommen

Musst/kannst Du nicht. Das ist ein kryptographisches Zertifikat.
Beschäftige Dich mit den Grundlagen von HTTPS/Verschlüsselung/public-/private-Key-Verfahren, wenn Du mehr wissen willst.

Gruß Tommy

OK, melde mich bei Gelegenheit. Danke erstmal.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.