Проблема отправки POST-запроса с большим размером тела в конечную точку Plumber API в R на Redhat 7.5 - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь отправить таблицу из 140 строк и 5 столбцов в виде объекта JSON (размером около 20 КБ) из VBA с использованием MSXML2.ServerXMLHTTP в теле запроса POST в конечную точку, доступную из R с помощью сантехника Пакет API. Конечная точка / функция, выполняющаяся в R на сервере, выдает следующую ошибку: simpleError в fromJSON (requestList): отсутствует аргумент «requestList» без значения по умолчанию

requestList - это параметр, переданный функции конечной точки. Похоже, что он теряется в веб-звонке. Если я уменьшу размер таблицы до 30 строк вместо 140, будет найден requestList и запрос будет успешно обработан.

Моя платформа выглядит следующим образом: 1. Конечные точки написаны на R и представлены с использованием Plumber API. 2. Конечные точки работают на экземпляре AWS с Redhat 7.5. 3. Тайм-аут для запроса установлен на 100 минут на VBA (на стороне клиента).

1 Ответ

0 голосов
/ 25 января 2019

Если fromJSON(requestList):

  • работает, когда у него 30 строк
  • поднимает ошибку типа argument "requestList" is missing, with no default при наличии 140 строк

... учитывая, что тела JSON не имеют ограничений по размеру (и даже если бы они имели, наверняка, не было бы 20 КБ), я бы сказал, что проблема заключается в данных, содержащихся в строках 31-140.

Должен быть какой-то специальный символ, который хорошо проходит сериализацию на стороне клиента VBA (т. Е. Данные правильно сериализуются, потому что VBA допускает этот специальный символ), но при десериализации на стороне сервера этот специальный символ прерывает запрос, как если бы ввод на самом деле не был входом.

Мое предложение по устранению неполадок будет состоять в том, чтобы разделить ваш запрос на блоки по 30 (1-30, 31-60, 61-90 и т. Д.) До тех пор, пока вы не найдете виновный кусок, а затем переходить к разбивке на этот фрагмент, пока вы обнаружить специальный символ, разбивающий его.

...