NEWS
Blockly HTML Request und Ergebnis auswerten
-
Versuche gerade mit Blockly einen HTML Request abzusetzen und das Ergebnis auszuwerten. bekomme jedoch immer wieder nachfolgende Fehlermedlung und weiß einfach nicht weiter;
11:55:50.078 [error] javascript.0 (21677) TypeError: Cannot read property 'indexOf' of undefined at Request._callback (script.js.Skripte.Multimedia.Skript1:12:61) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:185:22) at emitTwo (events.js:126:13) at Request.emit (events.js:214:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1161:10) at emitOne (events.js:116:13) at Request.emit (events.js:211:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1083:12) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20)
Das dazugehörige Blockly;
var RadioNamenRaw, result, RadioNamen, Radio_Session_ID_RAW; schedule("*/10 * * * * *", function () { try { require("request")('http://192.168.178.48/fsapi/GET/netRemote.sys.info.friendlyName?pin=1234', function (error, response, result) { // Frage Namen des Gerätes ab RadioNamenRaw = result; console.log(result); console.log(RadioNamenRaw); RadioNamen = RadioNamenRaw.slice(((Radio_Session_ID_RAW.indexOf('<c8_array>') + 1) - 1), Radio_Session_ID_RAW.indexOf('</c8_array>') + 1); console.log(RadioNamen); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + 'http://192.168.178.48/fsapi/GET/netRemote.sys.info.friendlyName?pin=1234'); });
Wenn ich die HTML Abfrage über den Explorer mache bekomme ich folgende Meldung zurück;
<fsapiResponse> <status>FS_OK</status> <value> <c8_array>Buero</c8_array> </value> </fsapiResponse>
Ich möchte als Ausbage nur das Wort "Buero" haben. Was mache ich verkehrt oder wie schaut eine Lösung aus damit ich nur das eine Wort als Ergebnis habe?
Danke und Grüße,
Claus -
@claus1993
Die Variable Radio_Session_ID_RAW erhält nirgends einen Wert.Ich würde das NPM-Modul xml2js verwenden (in Konfiguration der JS-Instanz eintragen !).
const parse = require('xml2js').parseString; parse(result, function(err, obj) { log(obj.fsapiResponse.value[0].c8_array[0]); });
-
@paul53
Danke für dein Feedback. Das NPM-Modul habe ich bereits installiert.Wenn ich meinen Log richtog verstehe bekomme ich erst bei dem letzten Punkt einen Error...
08:33:10.632 [info] javascript.0 (21835) script.js.Skripte.Multimedia.Skript1: request: http://192.168.178.48/fsapi/GET/netRemote.sys.info.friendlyName?pin=1234
08:33:10.674 [info] javascript.0 (21835) script.js.Skripte.Multimedia.Skript1: FS_OK Buero
08:33:11.675 [info] javascript.0 (21835) script.js.Skripte.Multimedia.Skript1: FS_OK Buero
08:33:11.677 [error] javascript.0 (21835) at Object. (script.js.Skripte.Multimedia.Skript1:12:63)In der Info Ausgabe 2 und 3 zeigt er die gelieferten Werte korrekt an, diese jedoch ohne die Namen in <>. Muss ich das irgendwie beim herausfiltern von "Buero" beachten?