Я пытаюсь очистить некоторые веб-данные с помощью API, который, как я вижу, вызывается при просмотре вкладки Safari Network.
Либо API неправильно получает параметры формы, если они передаются как json, либо я получаю сообщение об ошибке от R, если пытаюсь передать их как URLEncoded. Я не вижу, что я делаю неправильно? Я подозреваю, что часть проблемы заключается в том, что моя форма представляет собой список, содержащий список.
Запросить данные, как показано на вкладке Safari Network
MIME Type: application/x-www-form-urlencoded; charset=UTF-8
method: POST
section[]: 1
section[]: 4
period[]: 20170501
HTTR Post, имитирующий вышеописанное
form <- list(
section = list(1,4),
period = 20170501
)
resp<-POST(URL, body=form, encode = "json", verbose())
Затем код запускается без ошибок, и API возвращает результаты, но, похоже, игнорирует определенные параметры.
Вывод из verbose предполагает, что параметры включены:
{"section":[1,4],"period":20170501}
Настройка типа формы
Я вижу, что приведенное выше не использует правильный тип формы, поэтому я меняю кодировку на «форму», чтобы форма отправлялась как x-www-form-urlencoded. Однако затем я получаю следующую ошибку.
Error in vapply(elements, encode, character(1)) :
values must be length 1,
but FUN(X[[1]]) result is length 2





Фиксированный! Мне пришлось использовать Query вместо Body и добавлять [] после каждого элемента.
query <- list(
"section[]" = 1,
"section[]" = 4,
"period[]" = 20170501
)
resp<-POST(URL, query=query, verbose())