2014-02-06 4 views
5

Мы используем службу REST, которая возвращает огромные данные. В процессе производства серверное оборудование может справиться с этим. Мне нужно проверить службу REST, получив данные на моем локальном компьютере, , который не может обрабатывать огромные данные. Моя локальная машина - 4G i5. Я получаю исключение из памяти каждый раз, когда я нахожу службу.Как обрабатывать огромные данные из службы REST

response.getStatus() возвращает 200 статус. Но, собирая данные с помощью считывателя потока ввода, я получаю исключение из памяти.

BufferedReader br = new BufferedReader(new 
InputStreamReader(newByteArrayInputStream(response.getEntity().getBytes()))); 

Есть ли другой способ для сбора данных без исключения исключения памяти?

Я попытался подтолкнуть свой размер виртуальной машины к 2G, но он все еще не работает.

+0

Как насчет возврата только части ответа? –

+0

пишите на диск или в/dev/null – PeterMmm

+0

@Petey Мне нужен массив байтов для записи в файл, но при получении байтов он не работает. Response.getEntity(). GetBytes() ' – om39a

ответ

4

Если служба поддерживает его, используйте стандартный подход HTTP requesting chunks в пределах диапазона всей полезной нагрузки содержимого ответа.

Другой подход (опять же, если API поддерживает его) составляет pagination.

+0

Это хороший подход, который я могу порекомендовать. Спасибо, Брайан! – om39a

2

Вы можете установить пороговое значение в конфигурации службы REST, которая ограничивает объем возвращаемых данных. В производстве порог не будет установлен или будет установлен на большое значение. В тестовой среде вы можете установить порог на небольшое управляемое значение.

Смежные вопросы