Очистка данных с использованием R-формы со списком в POST - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь очистить некоторые веб-данные, используя API, который, как я вижу, вызывается при просмотре вкладки сети Safari.

Либо 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}

Корректировка для типа формы

Я вижу, что выше не используется правильный тип формы, поэтому я изменяю кодирование на "form", чтобы форма отправлялась как x-www-form-urlencoded. Однако затем я получаю следующую ошибку.

Error in vapply(elements, encode, character(1)) : 
  values must be length 1,
 but FUN(X[[1]]) result is length 2

1 Ответ

0 голосов
/ 29 марта 2019

Исправлена! Мне пришлось использовать Query вместо Body и добавлять [] после каждого элемента.

query <- list(
    "section[]" = 1,
    "section[]" = 4,
    "period[]" = 20170501
)

resp<-POST(URL, query=query, verbose())
...