Сервлеты - Как включить () ресурс и получить его ответ в виде строки? - PullRequest
0 голосов
/ 30 июня 2011

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

По сути, клиент вызывает сервер с параметром "batch" в соответствии с:

[{method: "getStatus" userId: "5"}, {method: "addFriend", userId: "5", friendId: "7"}]

Указывает пакет, состоящий из двух вызовов API.Я хочу выполнить каждый из них и объединить ответы в что-то вроде:

[{status: "success", status: "At work..."}, {status: "error", message: "Friend not found!"}]

Чтобы выполнить пакет, я итеративно вызываю RequestDispatcher.include(), как так:1013 * Все работает хорошо (все пакетные запросы выполняются, и сервер обрабатывает их правильно), но я не могу понять, как получить включенный ответ, чтобы я мог добавить его в массив результатов.

Есть идеи?

1 Ответ

2 голосов
/ 30 июня 2011

Сначала я бы попытался избежать прохождения стека сервлетов при обработке отдельных запросов.Разве вы не можете просто вызвать некоторые из ваших бизнес-методов напрямую?Я ценю, что вы хотите повторно использовать логику диспетчеризации и анализа параметров, но, возможно, эта часть не очень сложна.

Если это невозможно, возможно, вы можете добавить request.setAttribute("theResult", jsonData) в отдельные обработчики,так что вам не нужно смотреть на текстовый результат, но вы можете получить данные проще.

Если вы все еще хотите посмотреть поток ответов, вам нужно создать ResponseWrapper.Например, проверьте этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...