来自 httr 包的 API 调用中的正文
Body in API call from httr package
我想通过 API 和 httr 包从 R 调用我的飞利浦 Hue 灯。但是问题是我无法正确获得 body
。我确定 API 有效,因为 GET
调用正常。
例如,在 PUT
调用中打开和关闭灯的正文应该看起来与 {"on":false}
完全一样。调用看起来像 PUT(url = url), body = body1)
但是,我无法在 httr 包的 body
部分中使用它。我已经试过了:body1 <- '{on:"false"}'
其中 returns:"{on:\"false\"}"
、body2 <- list(on = "false")
returns $on [1] "false"
和 body3 <- toJSON(body2)
returns {"on":["false"]}
。
如您所见,上述 none 个选项正是您所需要的 return,它们都会产生额外的标点符号。知道我怎样才能准确地 {"on":false}
进入体内吗?
不幸的是,我无法为您提供可重现的示例,因为没有可用的 public 沙箱环境,而且我不希望每个人都控制我的灯 ;-) 但是可以找到文档 here.
如果您使用 jsonlite
包中的 toJSON
,那么您可以
library(jsonlite)
PUT("https://url", body=toJSON(list(on = unbox(FALSE))))
unbox()
将防止 R 向量被包裹在 JSON 数组的括号中。
我想通过 API 和 httr 包从 R 调用我的飞利浦 Hue 灯。但是问题是我无法正确获得 body
。我确定 API 有效,因为 GET
调用正常。
例如,在 PUT
调用中打开和关闭灯的正文应该看起来与 {"on":false}
完全一样。调用看起来像 PUT(url = url), body = body1)
但是,我无法在 httr 包的 body
部分中使用它。我已经试过了:body1 <- '{on:"false"}'
其中 returns:"{on:\"false\"}"
、body2 <- list(on = "false")
returns $on [1] "false"
和 body3 <- toJSON(body2)
returns {"on":["false"]}
。
如您所见,上述 none 个选项正是您所需要的 return,它们都会产生额外的标点符号。知道我怎样才能准确地 {"on":false}
进入体内吗?
不幸的是,我无法为您提供可重现的示例,因为没有可用的 public 沙箱环境,而且我不希望每个人都控制我的灯 ;-) 但是可以找到文档 here.
如果您使用 jsonlite
包中的 toJSON
,那么您可以
library(jsonlite)
PUT("https://url", body=toJSON(list(on = unbox(FALSE))))
unbox()
将防止 R 向量被包裹在 JSON 数组的括号中。