【问题标题】:Body in API call from httr package来自 httr 包的 API 调用中的正文
【发布时间】:2017-12-16 06:26:12
【问题描述】:

我想通过 API 和 httr 包从 R 调用我的飞利浦 Hue 灯。然而,问题是我无法获得body 的权利。我确信 API 可以正常工作,因为 GET 调用工作正常。

例如,在PUT 调用中打开和关闭灯的主体应该与{"on":false} 完全一样。电话看起来像PUT(url = url), body = body1)

但是,我无法让它在 httr 包的 body 部分中工作。我已经试过了:body1 <- '{on:"false"}' 返回:"{on:\"false\"}"body2 <- list(on = "false") 返回$on [1] "false"body3 <- toJSON(body2) 返回{"on":["false"]}

如您所见,以上选项都没有完全符合要求的返回值,而且它们都会产生额外的标点符号。知道如何在正文中准确地得到 {"on":false} 吗?

很遗憾,我无法为您提供可重现的示例,因为没有可用的公共沙箱环境,我不希望每个人都控制我的灯 ;-) 但是可以在 here 找到文档。

【问题讨论】:

    标签: r httr


    【解决方案1】:

    如果您使用的是jsonlite 包中的toJSON,那么您可以这样做

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

    unbox() 将防止 R 向量被包裹在 JSON 数组的括号中。

    【讨论】:

    • 谢谢,这有助于删除 [],但我仍然在 false 周围找到了 ""
    • @jeroen81 抱歉。错过了那部分。我已经更新了代码。只需使用适当的 R 布尔值即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多