NEWS
request to axios-> Problem mit axios.Post [gelöst]
-
ich nutze seit langem zum Stumm-/aktiv-Schalten von Telefonen in abgewandelter Form das script aus https://forum.iobroker.net/topic/36095/internet-filter-in-der-fritzbox-mit-javascript-setzen
nun möchte ich von request auf axios umstellen
alle "get"s ließen sich problemlos von request auf axios umschreiben, dass es funktioniert ist erkennbar dass es mit unverändertem Code-Teil mit Post weiterhin funktioniert.
Leider bekomme ich diesen Teil jedoch nicht hin, bei den meisten Versuchen erhalte ich "getcgivars(): Unsupported Content-Type."so sieht der funktionierende code mit request aus:
async function getFbSid() { if (FbDebugging){log("function getFbSid");} request.post({ url: 'http://' + FbIp, headers: headers, form: secLogin }, function(error, response, body) { if (error) log("c: "+error, "error"); //log("resp.body1: "+response.body) try { secSid = response.body.match(/\"sid\":\"(.*)\"/)[1]; //log ("w: "+secSid) } catch (e) { if (secSid == undefined) { log("b: "+"Your login was not successful. End Script: "+e, "error") return; } } if (FbDebugging){log(" > SID : " + secSid);} toggle_tel(); }); }
diverse Versuche zB:
async function getFbSid2() { if (FbDebugging){log("function getFbSid2");} let data = { form: secLogin}; const response = await axios.post('http://' + FbIp, data, headers); log(typeof response.data); //string log(response.data); //getcgivars(): Unsupported Content-Type. // auch so nicht: axios({ method: "post", url: 'http://' + FbIp, form: secLogin, headers: headers }) .then(function(response) { }
wäre schön, wenn mir jemand helfen könnte, es wäre der letzte request in meinen scripten
-
leider sieht man nicht welche headers und wie dein secLogin strukturiert ist.
aber bei axios heißt es nicht form sondern data
https://axios-http.com/docs/req_config -
@oliverio
danke für die Hilfe, kann zwar momentan nicht prüfen ob die Funktion als solche gegeben ist, aber Fehlermeldung hab ich keine mehr mit Änderung "form" zu "data"der Vollständigkeit halber und falls da doch etwas anders sein muss.
var headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'curl/7.64.0', 'Accept': '*/*' }; //secLogin: response=xxxx&username=test //secLogin passt, wenn ich es mit request angewendet habe funktioniert alles
-
@alka
Sieht ok aus
Allerdings muss Mandate immer die api Doku lesen. Da steht drin was gefordert wird -
@oliverio
"immer die api Doku lesen"
ich hielt "form" für ein Schlüsselwort welches mitgegeben wird, nicht wie das headers sondern so wie ein Key-Bezeichnerperfekt! funktioniert nun wie geölt - ohne request (und ein gutes Gefühl so ein "irgendwann muss ich es ja doch machen"-Problem gelöst zu haben)
was mir jetzt noch zu meinem Glück fehlt: wie schmeiße ich request aus dem System um beim Start die (unnötige) Fehlermeldung zu vermeiden und den Platz nicht zu verschwenden?
Der Herr Internet gibt auf verschiedene Suchanfragen nur massen haft andere Themen aus -
@alka sagte in request to axios-> Problem mit axios.Post:
was mir jetzt noch zu meinem Glück fehlt: wie schmeiße ich request aus dem System um beim Start die (unnötige) Fehlermeldung zu vermeiden und den Platz nicht zu verschwenden?
Du meinst beim Start des ioBroker?
Da wirst du wohl noch länger warten müssen, wenn ich mir da mein System so anschaue.echad@chet:/opt/iobroker $ npm ls request iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.backitup@2.9.3 │ ├─┬ dropbox-v2-api@2.5.10 │ │ └── request@2.88.2 deduped │ └── request@2.88.2 ├─┬ iobroker.javascript@7.1.6 │ └── request@2.88.2 ├─┬ iobroker.js-controller@5.0.16 │ └─┬ le-acme-core@2.1.4 │ └── request@2.88.2 deduped ├─┬ iobroker.mihome-vacuum@4.1.0 │ └── request@2.88.2 deduped ├─┬ iobroker.nina@0.0.25 │ └── request@2.88.2 deduped ├─┬ iobroker.nuki-extended@2.6.5 │ ├─┬ nuki-web-api@2.2.1 │ │ └── request@2.88.2 deduped │ ├─┬ request-promise@4.2.6 │ │ ├─┬ request-promise-core@1.1.4 │ │ │ └── request@2.88.2 deduped │ │ └── request@2.88.2 deduped │ └── request@2.88.2 deduped ├─┬ iobroker.samsung@0.5.11 (git+ssh://git@github.com/iobroker-community-adapters/ioBroker.samsung.git#17ce91831ad8d403265bc9db968c850e24402a11) │ └─┬ samsungtv@0.0.0 (git+https://git@github.com/luca-saggese/samsungtv.git#7fc20107455414e2afb94022682e0787e8635550) │ └── request@2.88.2 deduped ├─┬ iobroker.tr-064@4.2.18 │ └─┬ tr-O64@0.2.4 │ └── request@2.88.2 deduped └─┬ iobroker.whatsapp-cmb@0.2.3 └── request@2.88.2 deduped echad@chet:/opt/iobroker $
-
@thomas-braun
ups - ganz besonderer Dank für diesen schnellen Hinweis
wenn ich da ein uninstall/remove auf Anhieb gefunden hätte wäre mein System wohl hinüber