Как сделать запрос POST с опциями заголовка и данных в R, используя httr :: POST? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь сделать запрос POST с данными и информацией заголовка, используя httr::POST. Я вижу , как сделать запрос POST , но я не могу заставить его работать с параметрами curl для данных (-d) и заголовка (-H).

Это прекрасно работает в моем терминале (очевидно, с другими данными / API, но точно в том же формате)

curl -H "Accept: application/json" -H "Content-type: application/json" -d '{"name": "Fred", "age": "5"}' "http://www.my-api.com"

Вопрос

Как можно сделать вышеупомянутый запрос POST (с заголовками и данными), используя httr::POST?

Что я пробовал до сих пор

library(jsonlite)
my_data <- list(name="Fred", age="5") %>% toJSON

post_url <- "http://www.my-api.com"
r <- POST(post_url, body = my_data) # Data goes in body, I guess?
stop_for_status(r)

Я получаю

Error: Bad Request (HTTP 400).

Проверка r далее

r
Response ["http://www.my-api.com"]
  Date: 2019-07-09 17:51
  Status: 400
  Content-Type: text/html; charset=UTF-8
<EMPTY BODY>

1 Ответ

1 голос
/ 10 июля 2019

Вы можете попробовать это; с добавлением типа контента и заголовков:

link <- "http://www.my-api.com"
df <- list(name="Fred", age="5")

httr::POST(url = link,
           body =  jsonlite::toJSON(df, pretty = T, auto_unbox = T),
           httr::add_headers(`accept` = 'application/json'), 
           httr::content_type('application/json'))
...