【问题标题】:Missing square brackets in body of POST request using R's httr package使用 R 的 httr 包的 POST 请求正文中缺少方括号
【发布时间】:2018-09-23 17:57:11
【问题描述】:

我正在使用 R 包 httr 发送 POST 请求。我知道请求的主体应该是什么样子,但我无法使用 httr 创建它。我总是缺少一对方括号(见下文)。

如何修改我的 R 代码才能获得所需的结果?

这是 R POST-sn-p

cells <- c("Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
      "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')")
value <- 123

with_verbose(
  httr::POST(
    url = url,
    config = httr::config(ssl_verifypeer = FALSE, ssl_verifyhost = FALSE),
    body = list(Cells = list(`Tuple@odata.bind` = cells), Value = value),
    content_type("application/json"),
    encode = "json",
    set_cookies(...),
    handle = handle
  ) %>% httr::content()
) 

希望发送的正文:

{
   "Cells":[
   {"Tuple@odata.bind":[
      "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
      "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
   ]}
   ],
   "Value":"123"
}

发送的实际正文:

{
   "Cells": ######### Missing bracket here #######
   {"Tuple@odata.bind":[ 
      "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
      "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
   ]},
   ####### Missing bracket here #######
   "Value":"123"
}

【问题讨论】:

    标签: r http-post httr


    【解决方案1】:

    你快到了,只需在Cells 中添加另一个级别的列表:

    library(magrittr)
    library(jsonlite)
    
    cells <- c("Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
               "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')")
    value <- 123
    
    list(Cells = list(`Tuple@odata.bind` = cells), Value = value) %>%
      toJSON() %>%
      prettify()
    #> {
    #>     "Cells": {
    #>         "Tuple@odata.bind": [
    #>             "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
    #>             "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
    #>         ]
    #>     },
    #>     "Value": [
    #>         123
    #>     ]
    #> }
    #> 
    
    list(Cells = list(list(`Tuple@odata.bind` = cells)), Value = value) %>%
      toJSON() %>%
      prettify()
    #> {
    #>     "Cells": [
    #>         {
    #>             "Tuple@odata.bind": [
    #>                 "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
    #>                 "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
    #>             ]
    #>         }
    #>     ],
    #>     "Value": [
    #>         123
    #>     ]
    #> }
    #> 
    

    reprex package (v0.2.1) 于 2018 年 9 月 23 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2019-03-29
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多