在R中使用httr格式化POST正文

时间:2019-07-24 13:01:35

标签: r json post httr

我正在尝试更改Hubspot中的联系人属性值。

文档:https://developers.hubspot.com/docs/methods/contacts/update_contact

该项目位于以JSON编码的一系列数据帧中(请参阅下面的GET请求)

我尝试了几种格式

1)按照GET请求格式

val notAliveThreads = ArrayList<Thread>()
for (t in threads)
    if (!t.isAlive)
        notAliveThreads.add(t)
threads.removeAll(notAliveThreads)
if (threads.size == 0){
    // The size is 0 -> there is no alive threads.
}

2)尝试遵循文档中的python格式

library(httr)
library(jsonlite)
    URL <- paste0('https://api.hubapi.com/contacts/v1/contact/vid/',VID,'/profile?hapikey=',hapikey, sep = "")
    GURL <- GET(url = URL)

Contact <- content(URL, as = "text")
Contact <- fromJSON(Contact)

Contact$properties$needs_statements$value
#returns
[1] "Yes"

#so then working backwards in the POST request:
body <- toJSON('No', content$properties$property$needs_statements$value)

#alternatively
body <- list('No', content$properties$property$needs_statements$value)

#alternatively 
body <- ('No', content$properties$property$needs_statements$value)

#Post Request
POST( url = URL, body = body, encode = "json")

我也尝试过library(httr) body <- '{ "properties": [ { "property": "needs_statements", "value": "No"]} }' #alternatively body <- toJSON('{ "properties": [ { "property": "needs_statements", "value": "No" } ] }') #Post Request POST( url = URL, body = body, encode = "json") encode = "raw"

所有这些都撤回了代码400,该代码指示请求正文中的错误。

拍摄204。

我不包括标题,cookie或其他任何内容。我也很难找到有关此的任何信息。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好吧,所以在吃了一些食物和思考之后,一个快速的Google产生了这个: https://cran.r-project.org/web/packages/jsonlite/vignettes/json-aaquickstart.html

通过测试可以做到这一点:

fromJSON('[{"name":"Erik", "age":43}, {"name":"Anna", "age":32}]')

哪个打印数据框。

 name age
1 Erik  43
2 Anna  32

对我来说,棘手的部分是需要获得与原始GET请求所处结构相同的结构。

(我试图建立数据帧的数据帧,但进展不顺利)

然后我回想起上面的测试,并认为我可以对JSON做相同的测试。我做了,并创建了一个元素。

x <- fromJSON('{
  "properties": [
    {
      "property": "needs_statements",
      "value": "No"
    }
    ]
}')

和繁荣:204