Как перехватить и отредактировать тело ответа в пост-фильтре Zuul? - PullRequest
0 голосов
/ 24 июня 2019

Я использую пост-фильтр Zuul для перехвата ответа.Мое требование - добавить одно новое поле в ответ json.Я могу перехватить ответ и отредактировать его.Но не удалось установить обновленный ответ для RequestContext. Как можно прочитать тело ответа, отредактировать и обновить его до RequestContext, используя Zuul в качестве прокси в пост-фильтре?

использую.

private void updateResponseBody(RequestContext ctx) throws IOException, JSONException {

    final InputStream responseDataStream = ctx.getResponseDataStream();
    String responseData = CharStreams.toString(new InputStreamReader(responseDataStream, "UTF-8"));
    JSONObject jsonObj = new JSONObject(responseData);
    JSONArray groupsArray = jsonObj.getJSONArray("list");
    for (int i = 0; i < groupsArray.length(); i++) {
        JSONObject groupId = groupsArray.getJSONObject(i);
        groupId.accumulate("new_json_field_name", "new_json_field_value");
    }
    String updatedResponse = jsonObj.toString();
    // ctx.setResponseBody(body); // also not working
    ctx.setResponseDataStream(org.apache.commons.io.IOUtils.toInputStream(updatedResponse, "UTF-8"));

}

Ошибка, которую я получаю:

Error while sending response to client: java.io.IOException: An existing connection was forcibly closed by the remote host.

Может кто-нибудь, пожалуйста, помогите мне в этом.

...