Automate - Android | Wie poste ich Variablen per HTTP-Request / Wie kann ich Variablen in die URL einbauen (GET)?
Moinsen, es geht um die App
https://play.google.com/store/apps/details?id=com.llamalab.automate
In dieser würde ich gerne einen Flow erstellen, der meine aktuelle IP an meinen Server schickt. Dies soll per POST oder GET geschehen. Ich habe aber das Problem, das meine IP die ich erst abfrage, dann nicht in der URL einfügen kann domain.tld/script.php?IP=23.13.12.123 <-- die IP dann als Variable.
Oder alternativ, wahrscheinlich sogar etwas besser, da nicht alles irgendwo in Logs auftaucht, per POST.
Bin mit Automate noch nicht ganz so vertraut, was Variablen an geht und die Umsetzung mancher Flows allgemein.
Bitte nicht einfach nur den Link zum HTTP Request Example schicken. Das ist für mich kein Example. Ich brauche was brauchbares, indem einfach gezeigt wird, wie man ne blöde Variable an meinen Server schickt. Kann ja eigentlich nicht so schwer sein. Komme mir voll dumm vor deswegen. Wahrscheinlich hab ich einfach nur n Brett vorm Kopf.
Wie gesagt, am besten ein Beispiel, wo ich was genau eintragen muss, um die Variable IP und die Variable z.B. XYZ mit dem zugewiesenen Wert an den Server schicke.
Danke schon Mal im Voraus.
MfG
1 Antwort
Laut Dokumentation kannst du für den Response content (eine Ausgabevariable) einen Variablennamen setzen, in dem die IP gespeichert werden soll. Diese Variable ist anschließend für folgende Blocks verfügbar.
Wenn du die Variable jedoch zwischen verschiedenen Fibers (eines Flows) oder Flows hin- und herreichen möchtest, brauchst du eine explizite Übergabe. Im ersteren Fall via Variables give / Variables take, im zweiteren Fall müsstest du sie in einer Datenquelle (z.B. einer Datei) zwischenspeichern (File write / File read).
Der Screenshot zu dem Request URL Action Block auf androidaps.readthedocs.io verrät, dass das Feld für die Request URL die Eingabe von Ausdrücken erlaubt, die zur Laufzeit ausgewertet werden. Das heißt, du solltest in dem Feld deine Konkatenation vornehmen können.
"domain.tld/script.php?IP=" ++ yourIpVariable
Für einen POST-Request muss der Variablenwert als Eingabeparameter in das Request content body-Feld eingetragen werden. Setze erst den Content Type, z.B. auf text/plain. Da laut Dokumentation für den Body auch ein Dictionary angegeben werden kann (man sieht es ebenso auf dem Screenshot der oben verlinkten Seite), würde ich das für die Eingabe bevorzugen.
{ "IP" as String: yourIpVariable }
Die explizite Konversion (as String) ist vermutlich überflüssig.
Also ich werde nachher nochmal mein Script für die GET Variante überprüfen aber das klappt irgendwie leider nicht. Also wenn ich das so eingebe, wie du es oben geschrieben hast, kommen Fehler bei Automate. Jede andere Variante die ich noch in Automate getestet habe, geht auch nicht.
Die POST Variante hab ich auch in Automate übernommen aber da sagt mir mein Script, dass keine Variable gesetzt wurde. Das Script muss ich aber nochmal auf Richtigkeit prüfen, was die Auslesung der Variablen an geht. Hab das nämlich nur auf die schnelle gemacht.
Schreibe gleich oder die Tage Mal am PC meine Fehler hier rein und schaue dann nochmal in Ruhe drauf.
Aber danke trotzdem schon Mal. Das bringt mich deutlich weiter in die richtige Richtung!
Jetzt weiß ich zumindest schon Mal generell wie das grob zu verwenden ist. Jetzt muss ich nur noch schauen, ob der Fehler an meinem Script liegt und was das für Fehler in Automate sind.
MfG ✌🏼
Moinsen. Also das mit dem GET hat komischerweise jetzt einfach funktioniert, ohne dass ich was am Script geändert habe. Keine Ahnung warum.
Auf jeden Fall ist das schon Mal ziemlich nice.
Trotzdem wäre mir POST grundsätzlich noch Lieder, da die Daten nicht im URL /Server Log erscheinen.
Da muss ich nochmal nach schauen.
Unter anderem noch warum ich das ganze mache, ist mein Versuch, meine Remote IP auf meinem Server automatisch frei zu schalten, sobald sich diese ändert.
Ich schicke gleich den Link zu einer "neuen" Frage, die Quasi mit dieser im Zusammenhang steht. Evtl kannst du mir da ja auch noch gute Tipps geben oder hast evtl. auch andere Lösungsansätze.
MfG und danke nochmal.