@chris299 sagte in Http post mit Blockly:
@asgothian die Anmerkung verstehe ich nicht. Bezog sich das auf diese konkrete API? Man bekommt doch üblicherweise schon eine Antwort auf ein HTTP-POST, die man weiter verarbeiten kann...
Ich habe die 7.11.1. installiert, aber ich hänge da an einem Bug, dass ich das script mit dem POST nicht speichern kann.
Zudem scheint der von mir benötigte Auth-typ (String im Header) nicht möglich zu sein.....
Ich habe auch noch nicht verstanden, wie, bzw. ob überhaupt möglich ist, per blockly-JSON2object aus einem DP mit einem komplexen JSON Array einen bzw. mehrere Pfade für ein HTTP-GET zu extrahieren, dessen Response-Binary-Daten ich dann per POST weiterleiten wollte....
siehe auch https://forum.iobroker.net/topic/14288/tr-064-fritzbox-anrufbeantworter/39
das Format ist:
{"Root":{"Message":[{"Index":["1"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:30"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["1"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.001"]},{"Index":["0"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:17"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["0"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.000"]}]}}
Das extrahieren wird in Blockly wahrscheinlich gehen - das ist nicht das Problem. Das Problem ist das der http Post Aufruf asynchron abgearbeitet wird. Das bedeutet das deine js Funktion irgendwie darauf warten muss das das Ergebnis abgeholt werden kann, dann das Ergebnis laden muss. Dazu werden üblicherweise externe Bibliotheken genutzt. Diese Integration innerhalb einer Blockly Funktion dürfte eher schwierig werden.
Wenn die 7.10.1 für dich nicht funktioniert empfehle ich den folgenden Umweg:
Schreib (mit Hilfe aus dem Forum) ein JS Skript welches die Http Abfrage macht, getriggert durch einen DP in den du den Post String rein schreibst.
In dem Skript kannst du dann über eine entsprechende Bibliothek (Axios ist da aktuell glaub ich die Bibliothek der Wahl) den Post Befehl absetzen und das Ergebnis lesen. Dann schaust du noch ob ein Fehler geworfen wird,und wenn das nicht der Fall ist dann schreibst du die Antwort als String in einen weiteren DP. Auf dessen Änderung kannst du dann in Blockly triggern und die weitere Verarbeitung in blockly machen.
Zu dem JS Skript sollte es im Forum hinreichend Beispiele geben.
A.