在 r 中使用 httr 格式化 POST body
Formatting POST body with httr in r
我正在尝试更改 hubspot 中的联系人 属性 值。
文档:https://developers.hubspot.com/docs/methods/contacts/update_contact
此项存在于以 JSON 编码的一系列数据帧中(参见下面的 GET 请求)
我试过几种格式
1) 遵循 GET 请求格式
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")
2) 尝试遵循文档中的 python 格式
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"
encode = "form"
这些都是拉回代码400,表示请求中有错误body。
拍摄 204。
我不包括 headers 或 cookies 或其他任何东西。我也很难找到这方面的任何信息。
非常感谢任何帮助。
好吧,所以在吃东西和思考之后,快速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
我正在尝试更改 hubspot 中的联系人 属性 值。
文档:https://developers.hubspot.com/docs/methods/contacts/update_contact
此项存在于以 JSON 编码的一系列数据帧中(参见下面的 GET 请求)
我试过几种格式
1) 遵循 GET 请求格式
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")
2) 尝试遵循文档中的 python 格式
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"
encode = "form"
这些都是拉回代码400,表示请求中有错误body。
拍摄 204。
我不包括 headers 或 cookies 或其他任何东西。我也很难找到这方面的任何信息。
非常感谢任何帮助。
好吧,所以在吃东西和思考之后,快速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