Извлечь несколько строк JSON из составного HTTP-ответа

Я использую Apache HttpClient для работы с веб-службой, которая возвращает ответ multipart/form-data, содержащий json.

Мне очень трудно извлекать каждую строку JSON отдельно, поэтому я могу прочитать строку json.

Я читал похожие сообщения в Stackoverflow, и некоторые предлагали использовать загрузку файлов Apache commons, но я не уверен, как это может отделить строки JSON от всего ответа, который содержит кучу другого текста, такого как граничная строка, тип содержимого и т. д.

Ответ выглядит примерно так, как показано ниже.

--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetMailboxes
Status-Code: 200
X-Server-Response-Time: 4ms
X-Server-Chain: domain.com
Content-RequestDuration: 5

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetFolders
Status-Code: 200
X-Server-Response-Time: 8ms
X-Server-Chain: domain.com
Content-RequestDuration: 10

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetAlerts
Status-Code: 200
X-Server-Response-Time: 10ms
X-Server-Chain: domain.com
Content-RequestDuration: 12

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetAccounts
Status-Code: 200
X-Server-Response-Time: 11ms
X-Server-Chain: domain.com
Content-RequestDuration: 12

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetAllSavedSearches
Status-Code: 200
X-Server-Response-Time: 10ms
X-Server-Chain: domain.com
Content-RequestDuration: 12

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetAthenaSegment
Status-Code: 200
X-Server-Response-Time: 14ms
Content-RequestDuration: 21

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: ListFolderThreads
Status-Code: 200
X-Server-Response-Time: 110ms
Content-RequestDuration: 116

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-Type: application/json
Content-RequestId: GetUserInfo
Status-Code: 200
X-Server-Response-Time: 197ms
Content-RequestDuration: 204

{JSON}
--Boundary_16003419_2104021487_1483424496169
Content-RequestId: Status
Content-Type: application/json

{JSON}
--Boundary_16003419_2104021487_1483424496169--

Любой способ сделать это надежно?


comment
Как выглядит ваш запрос? Вы запрашиваете application/json? Это полное начало ответа? Это выглядит неправильно, Content-Type должен содержать граничный тег. Как вы читаете данные ответа с помощью httpclient?   -  person PeterMmm    schedule 03.01.2017
comment
@PeterMmm Я запрашиваю application/json; charset=utf-8 Я отредактировал вопрос и опубликовал полный ответ. Вот как это выглядит на 100% с измененным содержимым JSON на {JSON}   -  person Arya    schedule 03.01.2017
comment
Ответ начинается с --Boundary_16003419... ? Что это за сервер? Вы его контролируете?   -  person PeterMmm    schedule 03.01.2017
comment
@PeterMmm К сожалению, я не контролирую это. Но мне с ним работать :(   -  person Arya    schedule 03.01.2017
comment
Я только что использовал следующее регулярное выражение (\\{.*?\\}) - похоже, работает нормально   -  person Arya    schedule 07.01.2017


Ответы (1)


Одним из вариантов может быть Apache Mime4j. Если вы хотите, чтобы ваше приложение обрабатывать содержимое ответа без построения полного дерева DOM в памяти.

person ok2c    schedule 03.01.2017