2017-12-15 2 views
0

Ich möchte meine Philips Hue Lichter von R über die API und HTR-Paket anrufen. Das Problem ist jedoch, dass ich die body nicht richtig bekommen kann. Ich bin sicher, dass die API funktioniert, weil GET Anrufe gut funktionieren.Body in API Anruf von HTR-Paket

Zum Beispiel sollte der Körper in einem PUT Anruf zum Ein- und Ausschalten der Lichter genau wie {"on":false} aussehen. Der Anruf sieht aus wie PUT(url = url), body = body1)

Allerdings kann ich dies in dem body Abschnitt aus dem HTR-Paket nicht funktionieren. Ich habe es bereits versucht: body1 <- '{on:"false"}' Die zurückgibt: "{on:\"false\"}", body2 <- list(on = "false") gibt $on [1] "false" zurück und body3 <- toJSON(body2) gibt {"on":["false"]} zurück.

Wie Sie sehen können, keine der oben genannten Optionen genau gewünscht Rückkehr und sie alle produzieren zusätzliche Satzzeichen. Irgendeine Idee, wie ich genau {"on":false} im Körper bekommen kann?

Leider kann ich Ihnen nicht mit einer reproduzierbaren Beispiel liefern, weil es keine öffentliche Sandbox-Umgebung verfügbar ist, und ich will nicht alle meine Lichter steuern ;-) Allerdings kann die Dokumentation here finden.

Antwort

2

Wenn Sie toJSON vom jsonlite Paket verwenden, dann können Sie tun

library(jsonlite) 
PUT("https://url", body=toJSON(list(on = unbox(FALSE)))) 

Die unbox() wird von dem R-Vektor verhindern einen JSON-Array in den Klammern eingewickelt werden.

+0

Danke, das hilft, '[]' zu entfernen, aber ich habe immer noch das '' '' um 'false'. – jeroen81

+0

@ Jeroen81 Entschuldigung. Habe diesen Teil verpasst. Ich habe den Code aktualisiert. Verwenden Sie einfach einen korrekten R-Booleschen Wert. – MrFlick