Plug-in RESTask: zerlegen mit JSON

  • 9 Antworten
  • Letztes Antwortdatum
TylonHH

TylonHH

Enthusiast
945
Hallo,
Ich habe Probleme beim zerlegen einer response welche ich über das Plug-in RESTask for Tasker – Android-Apps auf Google Play erfolgreich erhalte.
Laut Plug-in erhalte ich nach einen POST eine erfolgreiche Antwort (Code 200) und kann auch die Antwort sehen. Es ist im JSON Format. Diese Antwort wird in die variable %rtres gespeichert.
Anschließend versuche ich nun einen Wert (id) dieser Antwort auszulesen.
Das soll das Scriptlet in Tasker machen:
Code:
var shorturl=JSON.parse(rtres).id

Das klappt aber nicht (mehr!).
Ich habe auch schon versucht alle Variablen global zu machen (ein Großbuchstabe).

Die JSON Antwort erhalte ich erfolgreich von Google Shortener:
Code:
{
"kind": "urlshortener#url",
"id": "http://goo.gl/fbsS",
"longUrl": "http://www.google.com/"
}

Wie kann ich den Fehler eingrenzen/beheben?

Gruß
 
versuch mal

var rtres = local('%rtres') //(wenn globale variable global('%Variablename')

var shorturl = rtres.id

alert(shorturl) // test obs passt
 
Ergebnis:
Code:
Achtung: undefined
 
Sorry, habs jetzt schnell mit erzeugter Tasker Variable gestestet:

var rtres = JSON.parse( local('%rtres') )

var shorturl = rtres.id

alert(shorturl)

edit
oder (wie du ursrpüngl. hattest) var shorturl = JSON.parse( local('%rtres') ).id
 
Zuletzt bearbeitet:
So langsam glaube ich das die %rtres gar nicht gesetzt wird.
Ich schreibe mal den Entwickler wie ich das überprüfen kann.
 
Schon komisch, evtl. ists eine globale varible?

Das funktioniert bei mir und liefert "id"

Tjs (44)
A1: Variable Set [ Name:%rtres To:{
"bla": "bla",
"id": " www.test.de",
"foo": " foo"
} Do Maths:Off Append:Off ]
A2: JavaScriptlet [ Code:var shorturl = JSON.parse( local('%rtres') ).id Libraries: Auto Exit:On Timeout (Seconds):45 ]
A3: Flash [ Text:%shorturl Long:Off ]


du könntest evtl. erstmal schaun ob mit alert(local('%rtres') was "ankommt"
[doublepost=1452527371,1452527073][/doublepost]Sorry für den ganzen hickhack und den doppelpost, aber ich hab gerade festgestellt, das so wie du es ursprünglich hattest es gehen müsste (also das local('%variable') nicht nötig ist und nur die variable reicht)
deshalb denke ich auch es ist ein fehler im plugin
(brauchst du das überhaupt? würde es nicht evtl. mit dem tasker http get, besser gleich in dem javascriptlet oder zu not wget auch gehen? )
 
Ja das wäre die Alternative über get. Vorher lief es aber schonmal mit dem Plug-in.
Hier die Antwort vom Entwickler nach 10(!) Minuten:
To double check, you should first clear the variable using the "Variable/Variable Clear" action, then after the REST Task you can use a Task/If action or Wait Until action to test or wait until the variable "is set". Hope this helps.
Habe ich eben mit den warte until set Befehl getestet, Task bleibt stehen. Wird also nicht gesetzt.
 
Ich habe es eben mal mit http POST(!) versucht.
Als %HTTPR erhalte ich "200"
Als %HTTPD erhalte ich "%HTTPD", also ohne Inhalt. Warum?
 
Mit content type "plain/text" wird die Variable %HTTPD (natürlich mit einer Fehlermeldung) gesetzt.
Mit dem benötigen Content Type "application/json" jedoch nicht.
 
Lösung: mit HTTP POST Ergebnis in eine Datei schreiben und mit Scriptlet auslesen
Code:
var arr = JSON.parse(readFile ("/sdcard/shorturl.txt"));
var shorturl = arr.id;
flash(shorturl);
 

Ähnliche Themen

NooneR
Antworten
40
Aufrufe
1.279
rtwl
rtwl
keinnamemehrfrei
  • keinnamemehrfrei
Antworten
2
Aufrufe
716
keinnamemehrfrei
keinnamemehrfrei
Zurück
Oben Unten