Autor | Nachricht |
---|---|
Gesperrt Anmeldedatum: 29.01.2016 Beiträge: 1 | zitieren Hallo zusammen, ich habe ein System welches über HTTP-Requests mit an anderen Systemen Daten austauschen kann. Ich würde gerne von einem System mit einem HTTP-POST auf die JSON API des anderen System zugreifen und dieser Werte übermitteln. Dabei bietet mir das System von dem ich senden will schon einige Einstellmöglichkeiten an. Die IP und Authentifizierungsdaten sind dem System schon bekannt. Unter dem Feld Parameter muss ich /api/ eintragen und im header nur den Content-Type:application/json; Wenn ich die zu übertragenden Werte in den HTML-Teil als String { "jsonrpc": "2.0", "method": "IPS_RunScript", "params": [28073], "id": 1 } hineinschreibe funktioniert alles wie gewünscht. Da ich aber gerne einen mit "params" einen variablen Wert übertragen will muss ich daraus eine Funktion machen. Das ist genau der Teil an dem ich nicht weiß wie ich es machen muss. Ich weiß das das Skript mit function data(v) beginnen muss. Ich habe es ganz banal so versucht: function data (v) jsonrpc :2.0 method :"IPS_RunScript" params : '..v' id : 1 end Leider funktioniert meine Idee nicht und ich hoffe jemand von euch könnte mir bei meinem Problem etwas helfen. DerWert für v wird hinterher vom System übergeben und als Skriptsprache steht hier glaube ich Lua zur Verfügung. Falls wichtige Informationen fehlen sollten, bitte bescheid geben. Ich habe von dieser Materie leider nicht viel Ahnung. Ich habe im Anhang einmal mein Befehl, welcher funktioniert und ein Beispiel für Sonos lautsprecher. Dieser Befehl übergibt die Lautstärke. Leider verstehe ich in diesem Beipsiel nicht was genau passiert. Lieben Gruß Snook Funktioniert funktioniert 1.png - [Bild vergrößern] Sonos Beispiel Beispiel Sonos.png - [Bild vergrößern] |
▲ | pn |
Administrator Name: Marc Geschlecht: Anmeldedatum: 28.08.2004 Beiträge: 52420 Wohnort: Lohmar | zitieren Dieser HTML Teil ist in JSON formatiert:
Mit JSON werden statische Daten auf eine bestimmte Art formatiert. Durch diesen Standard können dann verschiedene Betriebssysteme/Softwares miteinander Daten austauschen. Das ist vergleichbar mit einer Person, die von dir eine Excel-Tabelle erwartet. Mit anderen Dokumenten kann der Empfänger also nichts anfangen. JSON fängt (bei einem Objekt als Inhalt) immer mit der geschweiften Klammer an und endet auch so. Wenn Du nun mit "function" anfängst oder sonstigen Buchstaben und Zeichen, dann resultiert daraus am Ende kein JSON mehr. Der Empfänger kann also nichts mit deinen gesendeten Daten anfangen. Allerdings habe ich deinem 2. Screenshot entnommen, dass dein Formular, in dem du den JSON-Datensatz eingetragen hast, eine Sprache spricht, die es dir ermöglicht den JSON-Datensatz vor dem Absenden noch zu ändern. Du meinst es handelt sich um Lua. Ich habe bisher kein Lua eingesetzt, aber es sieht nicht großartig anders aus als andere Sprachen, weshalb ich dir die Logik erklären kann. Und zwar hast Du folgendes in deinem funktionierenden Beispiel (habe es gekürzt):
Beachte hierbei das mitten in der Funktion. Das findest Du auch in deinem funktionierenden Beispiel:Ich gehe nun davon aus, dass irgendwas die Funktion startet. Vielleicht findest Du heraus ob Funktionen mit dem Namen grundsätzlich von deiner Software ausgeführt werden oder ob du vorher eine Liste mit Funktionennamen irgendwo hinterlegen musst. Das sollte sich aus der Software-Anleitung ergeben. Ich gehe jetzt mal davon aus, dass die Software eine Grundeinstellung besitzt, die Funktionen mit dem Namen immer automatisch ausführt.Jetzt zu dem was passiert. Die Funktion bekommt den Wert und verarbeitet ihn. Anschließend wird über ein Ergebnis ausgegeben. Quasi das Ergebnis einer Mathe-Aufgabe oder wie im jetzigen Fall einen Text. Da sich die Variable mitten in dem Text befindet, wird diese ersetzt und am Ende kommt das heraus:
Den Punkt musst du jetzt nur verstehen. Die Sonos Box bekommt also nicht usw. zugesendet, sondern nur den genannten Text. Auch die einfachen Anführungszeichen sind verschwunden. Die sollen dem Programm nämlich nur helfen zwischen Variablen, Text, Zahlen und Funktionen zu unterscheiden. D.h. ist in Lua ein Text und ist eine Variable.Was auch wichtig ist - und eine Eigenheit von Lua - ist das Verbinden eines Textes mit einer Variablen. Dazu braucht es wohl zwei Punkte . Daher muss es so geschrieben werden:
so würde es dagegen nicht funktionieren:
Ich hoffe du konntest mir soweit folgen. Nun zurück zu den JSON-Daten, die Du verändern möchtest:
Du willst, dass die Zahl "28073" variabel ersetzt werden kann mit einem Wert aus deiner Software. Du hast als Name "Test1" hinterlegt: aber in der Funktion hast Du "v" geschrieben: Das sollte denke ich falsch sein, denn im -Beispiel heißt der Befehl genau wie die Variable.Demnach müsste es mit "Test1" stattdessen so aussehen:
Bitte beachte und den Einsatz der einfachen Anführungszeichen. Dadurch wird am Ende das dabei herauskommen, wenn digital "0" ergibt:
Damit habe ich im Grunde alles erklärt. Allerdings glaube ich, dass Du mit JSON falsch liegst. Schließlich ist das funktionierende Sonos-Beispiel anders formatiert. Oder spricht Sonos JSON und XML? Denn noch mal zum Vergleich. So sieht im Allgemeinen JSON aus:
und so die gleichen Daten in XML:
Es wird also statt mit geschweiften Klammern mit spitzen gearbeitet und der Aufbau ist auch etwas anders. Daher die Frage warum du JSON in deinem Versuch stehen hast?! beispiel_sonos.png - [Bild vergrößern] funktioniert_1.png - [Bild vergrößern] 2016-02-06 11_10_05-Fotos.png - [Bild vergrößern] 30x bearbeitet |
▲ | pn email |
Gast | zitieren Mach mit!Wenn Dir die Beiträge zum Thread "HTTP-Request an JSON API" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:Registrierte Mitglieder genießen die folgenden Vorteile: ✔ kostenlose Mitgliedschaft ✔ keine Werbung ✔ direkter Austausch mit Gleichgesinnten ✔ neue Fragen stellen oder Diskussionen starten ✔ schnelle Hilfe bei Problemen ✔ Bilder und Videos hochladen ✔ und vieles mehr... |
▲ | |
Ähnliche Beiträge | Re: √ | Letzter Beitrag | |
---|---|---|---|
HashMap-JSON Hallo,
bitte siehe unten JSON. wie kann ich dafür HashMap schreiben? 2 HashMap ?
JSON:
{ "data": { "abNumberCodeAndDescription1": { "KeM5": 40 }, "abNumberCodeAndDescription2": { "KeM5": 40... [Java]von Junior Java | 1 198 | 06.03.2021, 13:55 mgutt | |
Request for help from community Hello all
First let me state i dont speak German so please reply to me in English if possible or simple German google translate can correctly work :)
I have recently moved into Luxembourg and would like to ask if you know anyone that knows really well... von unhuzpt | 3 628 | 14.12.2018, 16:57 unhuzpt | |
Special request - manifold and exhaust housing Hi everybody
I'l looking for a hand made manifold and a hot side (exhaust housing) for a kkk k24 turbo near Trier.
Is somebody knows or can help me??
Thank you in... von olivenoire | 9 596 | 09.09.2012, 19:57 olivenoire | |
Informatiker:in / ITSM Prozessmanager:in Service Request- und Identity Access Management | enercity Bewerben Sie sich bis zum 01.08.2024.
Jetzt bewerben!(https://api.relaxx.center/r/571d69da19d4469d9b1c2db4d11a9c23?pid=2170917&mpid=1350859&prid=1021081&tid=30)
Zur Stellenanzeige auf Mein IT Job(https://s.jobboarddeutschland.de/1nak)
Ihre... [Jobs & Stellenangebote]von kimjob | 0 48 | 07.06.2024, 16:13 kimjob | |
22-08-10 | L1/L2/L3 HTTP Proxies (925) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 70 | 21.08.2010, 19:55 extremeboy | |
02-08-10 | L1/L2/L3 HTTP Proxies (727) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 67 | 01.08.2010, 18:39 extremeboy | |
01-08-10 | L1/L2/L3 HTTP Proxies (712) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 82 | 31.07.2010, 18:41 extremeboy | |
31-07-10 | L1/L2/L3 HTTP Proxies (768) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 83 | 30.07.2010, 17:38 extremeboy | |
30-07-10 | L1/L2/L3 HTTP Proxies (779) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 63 | 29.07.2010, 17:52 extremeboy | |
29-07-10 | L1/L2/L3 HTTP Proxies (758) Checked & filtered with ProxyFire MasterSuite (Timeout: 10)
>>Download Lists<< ... von extremeboy | 0 78 | 28.07.2010, 17:49 extremeboy |