我试图在R studio的帮助下生成最新众筹项目的概述,该网站不允许通常和直接的Rvest (和Selector Gadget)。我想把项目和细节刮到R工作室。该网站有一个隐藏的API:
https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects
我设法向隐藏的API发送了一个POST请求。代码:
url <- "https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects"
response <- POST(url,
encode="json",
add_headers(Authorization = "Token XXXXXXXXX"),
body = "{\"texts\":[\"A simple string\"]}")
content(response)但是,我确实收到错误$Message 1“请求包含实体主体但不包含内容类型报头。推断的媒体类型‘应用程序/八位字节流’不支持此资源。”现在。我想回应需要更多的论据?有什么想法吗?
发布于 2021-04-03 19:02:25
我发现下面的方法是有效的。据我所知,一个问题是,所需的编码是form,而不是json。另一个问题是,从您发布的请求中,您没有发送任何正文,这意味着您希望从API返回的信息。因为输入所有这些内容很麻烦,所以我通常会从chrome复制curl命令并将其粘贴到here中,以获得良好的正文格式。
如果你计划经常这样做,我建议在你的请求的标题中放入你的电子邮件地址或其他东西,这样系统管理员就有机会在不需要这种行为的情况下联系你。
require(httr)
headers = c(
`Email` = 'johndoe@company.com'
)
data = list(
`Culture` = 'nl-NL',
`Skip` = '0',
`MaxTotal` = '18',
`ProjectGroup` = '',
`Filters[0][FilterFieldId]` = '6',
`Filters[0][FilterType]` = 'Textbox',
`Filters[1][FilterFieldId]` = '10',
`Filters[1][FilterType]` = 'Checkbox',
`Filters[2][FilterFieldId]` = '7',
`Filters[2][FilterType]` = 'Radiobutton',
`Filters[3][FilterFieldId]` = '5',
`Filters[3][FilterType]` = 'MinMaxSliderInt',
`Filters[3][Values][0][Id]` = '1',
`Filters[3][Values][0][Value]` = '19200',
`Filters[3][Values][1][Id]` = '2',
`Filters[3][Values][1][Value]` = '2600000',
`Filters[4][FilterFieldId]` = '1',
`Filters[4][FilterType]` = 'MinMaxSliderDouble',
`Filters[4][Values][0][Id]` = '1',
`Filters[4][Values][0][Value]` = '1.2',
`Filters[4][Values][1][Id]` = '2',
`Filters[4][Values][1][Value]` = '9',
`Filters[5][FilterFieldId]` = '2',
`Filters[5][FilterType]` = 'Checkbox',
`Filters[6][FilterFieldId]` = '3',
`Filters[6][FilterType]` = 'MinMaxSliderInt',
`Filters[6][Values][0][Id]` = '1',
`Filters[6][Values][0][Value]` = '5',
`Filters[6][Values][1][Id]` = '2',
`Filters[6][Values][1][Value]` = '120',
`Filters[7][FilterFieldId]` = '4',
`Filters[7][FilterType]` = 'Checkbox',
`Filters[8][FilterFieldId]` = '8',
`Filters[8][FilterType]` = 'Checkbox',
`PageId` = '1219',
`OverviewTypeId` = '3',
`WhiteLabelCode` = '',
`OrderBys[0][Id]` = '5',
`OrderBys[0][Value]` = 'Openstaand bedrag',
`OrderByDescending` = 'false'
)
res <- httr::POST(url = 'https://www.geldvoorelkaar.nl/umbraco/api/ProjectApi/GetProjects',
httr::add_headers(.headers=headers),
body = data,
encode = "form")
result <- content(res)https://stackoverflow.com/questions/66926063
复制相似问题