NEWS
HTTP Post Blockly klappt nicht
-
Ich versuche gerade einen HTTP-Post übergabe, aber irgendwie klappt das nicht so wirklich:
Hier das Blockly:
Und hier der Teil aus der Anleitung:
Es kommt immer folgefender Fehler:
javascript.0 12:39:41.022 warn Daten: <html> <head><title>401 Authorization Required</title></head> <body> <center><h1>401 Authorization Required</h1></center> <hr><center>nginx</center> </body> </html> javascript.0 12:39:41.022 warn Status Code: 401
Irgendwie kapier ich das ganze einfach nicht....
Was mache ich denn falsch? -
@quorle sagte in HTTP Post Blockly klappt nicht:
Was mache ich denn falsch?
Du übergibst die Daten die in den Header kommen in den Nutzdaten (Body).
Schau mal hier:
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost
https://forum.iobroker.net/topic/77057/http-post-und-headerübergabeDirekt mit JS sollte das problemlos funktionieren. Ob und wie das mit Blockly geht, kann ich gerade nicht sagen.
-
@codierknecht sagte in HTTP Post Blockly klappt nicht:
Ob und wie das mit Blockly geht, kann ich gerade nicht sagen.
In Blockly gibt es aktuell keine Möglichkeit die zusätzlichen HTTP-Header manuell zu setzen.
-
@haus-automatisierung sagte in HTTP Post Blockly klappt nicht:
In Blockly gibt es aktuell keine Möglichkeit die zusätzlichen HTTP-Header manuell zu setzen.
Vielleicht kannst Du ja für ein künftiges Update einen optionalen Andockpunkt für zusätzliche Header einplanen.
Das Problem hatten wir zuletzt ja bereits mehrfach, wenn z.B. (wie hier) die Authentifizierung im Header mitgegeben werden muss. -
Ohh, dass ist genau das, was wahrscheinlich vielen in dem Block fehlt. Im Header die Auth mitzugeben.
-
Ich habe jetzt einmal etwas in Javascript zusammen gebastelt. Leider kommt noch folgendes im Log:
javascript.0 2025-05-23 09:00:02.359 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: Object [AxiosHeaders] { server: 'nginx', date: 'Fri, 23 May 2025 07:00:02 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '199', connection: 'keep-alive', etag: 'W/"c7-noe0fwDbWuMu0qzAmvcwPjRbXxw"', 'strict-transport-security': 'max-age=63072000; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'referrer-policy': 'same-origin', 'x-frame-options': 'DENY', 'content-security-policy': "base-uri 'self'; connect-src 'self'; frame-ancestors 'none'; font-src 'self'; form-action 'self'; img-src 'self' data: blob:; object-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline';" } javascript.0 2025-05-23 09:00:02.359 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: {"message":["value must not be greater than 9999999999.99999","value must not be less than 0","value must be a number conforming to the specified constraints"],"error":"Bad Request","statusCode":400} javascript.0 2025-05-23 09:00:02.359 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: 400 javascript.0 2025-05-23 09:00:02.359 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: httpPost(url=https://public-api.energy-tracker.best-ios-apps.de/v1/devices/6076-4ff3-b8af-c45815b4a1bf/meter-readings, responseTime=148ms) javascript.0 2025-05-23 09:00:02.213 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2025-05-23 09:00:02.211 info script.js.common.TEST-Scripte.TEST_Datenübermittlng_Zähler: httpPost(config={"method":"post","url":"https://public-api.energy-tracker.best-ios-apps.de/v1/devices/6076-4ff3-b8af-c45815b4a1bf/meter-readings","responseType":"text","responseEncoding":"utf8","timeout":2000,"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0","Content-Type":"application/json","Authorization":"Bearer >>> MEIN TOKEN <<<"},"data":{"value":"123.25"}}, data=[object Object])
Und Hier mein Code:
httpPost( 'https://public-api.energy-tracker.best-ios-apps.de/v1/devices/6076-4ff3-b8af-c45815b4a1bf/meter-readings', { //body: '{"value": 123.45}' value : '123.25' }, { timeout: 2000, headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer >>> MEIN TOKEN <<<' } }, (error, response) => { if (!error) { console.log(response.statusCode); console.log(response.data); console.log(response.headers); } else { console.error(error); } } );
Warum wird die Value nicht übergeben? Denn Status 400 bedeutet "Fehlerhafte Anfrage".
Ich würde halt gerne 1 Mal Pro Tag den Wert eines Objektes senden wollen. Aber Javascript habe ich noch nie gemacht -
@quorle sagte in HTTP Post Blockly klappt nicht:
Denn Status 400 bedeutet "Fehlerhafte Anfrage".
Du übergibst den Value als String und nicht als Float. Also aus
value: '123.25'
solltevalue: 123.25
werden."value must be a number conforming to the specified constraints"