Seite 1 von 1

Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 10. Jul 2022 13:10
von Jensemann_P
Hi Leute,

ich möchte aus Scripten http-Requests abschicken (Einfacheres absenden reicht zunächst mal, Rückgabe wird also nicht weiter verarbeitet).

Der schienbar ältere Weg wäre der hier:

Code: Alles auswählen

sendHttpGetRequest("192.168.178.20/reboot", 2000)
Scheint aber aktuell nicht mehr in den Standard-Funktionen enthalten zu sein.
"sendHttpGetRequest" is not defined in <eval> at line number 1
Anderen Code gefunden, der wohl bei einigen läuft, bei mir aber nicht:

Code: Alles auswählen

var HttpUtil        = Java.type("org.openhab.core.io.net.http.HttpUtil")
HttpUtil.executeUrl("GET", "192.168.178.20/reboot", 2000);
Ergebnis im LOG:
2022-07-10 13:09:41.103 [WARN ] [e.automation.internal.RuleEngineImpl] - Fail to execute action: 3
java.lang.IllegalArgumentException: Invalid URI host: null (authority: null)
Tja, und ne steh ich mal wieder wie der Ochs vorm Berg :?:

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 10. Jul 2022 17:03
von tomtom97
Hallo,

gemäß der Doku von https://www.openhab.org/javadoc/latest/ ... p/httputil erwartet die Funktion executeUrl drei Parameter:

public static String executeUrl​(String httpMethod, String url, int timeout) throws IOException

Also die HTTP-Methode, eine URL und einen Integer-Wert als Timeout.
In Deinem Fall ist "192.168.178.20/reboot" keine gültige URL, was Dir auch mit "Invalid URI host: null" versucht wird, zu sagen.

URLs beginnen immer mit dem zu verwendenden Protokoll, also versuche mal, ein "http://" davorzusetzen ;)

Gruß
Thomas

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 00:02
von Jensemann_P
Oha, URI und URL verwechselt. Bin einfach davon ausgegangen, dass httputil schon von http als Protokoll ausgeht.

Was ich aus der Doku jetzt nicht rausfinde: Wie bekomme ich das ganze mit Basic Credentials ausgeführt?

"http://user:password@192.168.178.20/reboot" mag er nicht. Evtl wegen Sonderzeichen im Passwort.
Hatte noch folgende Notation gefunden:
http://192.168.178.20/reboot{Authorization=Basic XXXXXXXXYYYYYYYY}

Hier stört sich der interpreter von OH an der geschweiften Klammer als reserviertes Zeichen.

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 01:39
von udo1toni
Die http Actions sind nach wie vor Teil des Core, siehe hier: https://www.openhab.org/docs/configurat ... tp-actions

Was das voranzustellende http:// betrifft: sowohl die http Actions als auch httputil können genauso gut auch mit https umgehen, welches im Übrigen inzwischen vermutlich weiter verbreitet ist als http, lediglich im eigenen Netz wird man vielleicht den Aufwand scheuen, Zertifikate usw. an den Start zu bringen. Es ist also nur logisch, dass man das Protokoll mit angeben muss.

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 11:30
von Jensemann_P
Wenn ich es mit

Code: Alles auswählen

sendHttpGetRequest("http://192.168.0.20/reboot")
versuche, bekomme ich:

Code: Alles auswählen

"sendHttpGetRequest" is not defined in <eval> at line number 1
Fehlen da irgendwelche includes oder Verweise auf namespaces?

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 11:47
von udo1toni
Kann es sein, dass Du ECMA verwendest? Die Actions stehen auf diesem Weg nur in der DSL zur Verfügung.

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 15:23
von Jensemann_P
Genau, ich mach das in ECMA.

Re: Problem ein HTTP-Request aus Script abzuschicken

Verfasst: 11. Jul 2022 17:02
von Jensemann_P
Da es nur drum ging einigen Devices mal schnell was zu schciken ohne groß Rückantwort o.ä. hab ich das jetzt mit einem Rule DSL script gemacht und es läuft.

Danke
Jens