NEWS
httpGet entfernt "?" am Ende der Url
-
Ich habe länger nicht mehr upgedatet. Daher daher bin ich erst jetzt auf das request -> httpGet-Problem gestoßen.
Das Problem ist aber, dass die Ökofen Peletronic Heizung beim Auslesen der Werte teils ein "?" am Ende der Url benötigt.
Konkret liefern folgende Anfrangen unterschiedliche JSON-Objekte:
Nur Daten:
http://192.168.1.20:4321/password/all
Daten mit Metainfos:
http://192.168.1.20:4321/password/all?Blöderweise scheint httpGet das ? am Ende der Url zu entfernen. Sobald ich noch etwas zusätzlich anhänge, liefert die Pelletronic aber eine Doku zum API.
Gibt's da eine Option, das zu verhindern? Irgendwie ist es ein Bug - irgendwie nicht. Axios direkt zu verwenden, scheint eher mühsam zu sein...
Update: Es scheint, dass selbst der Axios-Request das ? entfernt. Da muss ich noch weiter recherchieren.
-
auf die schnelle gelesen scheint das ? als letzte zeichen nicht illegal zu sein.
allerdings auch ziemlich nutzlos, da ja dannach query parameter kommen sollten
https://datatracker.ietf.org/doc/html/rfc3986#section-3.4du kannst mal versuchen zu trixen und noch eine # anfügen
also
http://192.168.1.20:4321/password/all?#
oder ein maskiertes leerzeichen
http://192.168.1.20:4321/password/all? -
@noox sagte in httpGet entfernt "?" am Ende der Url:
Es scheint, dass selbst der Axios-Request das ? entfernt.
das verwundert nicht, denn httpGet ist 'nur' ein Wrapper für axios. Du könntest aber noch
?=
probieren -
@oliverio
Ich hatte einiges probiert. # noch nicht. Und das funktioniert tatsächlich. Ich kann nach dem # sogar noch Beliebiges Dranhängen.Aber: Axios entfernt das Fragezeichen in der Mitte dann trotzdem!
-
@noox
Also du könntest jetzt deine Daten abfragen?Das # ist das Fragmentzeichen. Meistens sieht man es in den Links, wenn auf Basis, dessen auf eine Anker ID in mitten des Dokuments verwiesen wird.
-
@oliverio sagte in httpGet entfernt "?" am Ende der Url:
Das # ist das Fragmentzeichen. Meistens sieht man es in den Links,
z.b. hier
-
@oliverio
Ja, hab grad gesehen - der Teil mit dem # wird vom Browser gar nicht an den Server gesendet. Daher funktioniert das im Browser.Vermutlich ignoriert das Axios - zusammen mit dem Fragezeichen ebenfalls.
Die Abfrage mit ? funktioniert im ioBroker-Script noch nicht. Gibt es noch eine andere Möglichkeit einen HTTP-Request durchzuführen?
-
Das Fragmentzeichen # interessiert nur den Client, nicht den Server.
Wie oben schon erwähnt ist ein alleinstehendes Fragezeichen nutzlos, da eigentlich danach die Queryparameter kommen.Da die RFC da nicht sehr strict formuliert ist, ist ein einzelne ? schon zulässig.
Axios verhält sich da etwas strikter. Es wäre interessant das mal als Issue aufzumachen. mal schauen, was da diskutiert werden würde. (Man beachte den konjunktiv ) -
@oliverio
Ein einzelnes Fragezeichen ist sicher nicht Standard. Aber grad im IOT-Bereich hat man halt doch öfters mit etwas eigenwilligen APIs zu tun. Es ist halt nicht alles strikt REST und JSON (oder wie früher SOAP).Ich habe auch schon überlegt, eine Issue zu öffnen. Aber wird wenig bringen. Eine ähnliche Diskussion gabs zu einer Python-Library vor 8-9 Jahren.
Einstweilen habe ich mir mit
exec("curl ....", ...);
geholfen.
-
@noox
Evtl. schneidet Axios nur das letzte Fragezeichen weg. Hast Du mal ?? am Ende probiert? -
@peterfido
Ich hatte 2 Fragezeichen zuvor schon mal direkt bei der Ökofen Peletronic probiert - und dann zeigt die wieder die Dokumentation an. Immer wenn ein ungültiger Request kommt, dann wird die Dokumentation angezeigt.Ich habe es jetzt nochmals mit httpGet probiert: es scheint, dass Axios dann nix wegschneidet. D.h. die beiden Fragezeichen weiterleitet, weil die Peletronic dann auch die Dokumentation liefert.
Frustrierend