Ограничение размера ответа при использовании Apache HttpComponents

Я преобразовываю некоторый код из библиотеки Http Client 3.x в библиотеку компонентов Http 4.x. Старый код содержит проверку, чтобы убедиться, что ответ не превышает определенного размера. Это довольно легко сделать в Http Client 3.x, так как вы можете вернуть поток из ответа с помощью метода getResponseBodyAsStream() и определить, когда размер был превышен. Я не могу найти аналогичный способ в компонентах Http.

Вот старый код в качестве примера того, что я пытаюсь сделать:

private static final long RESPONSE_SIZE_LIMIT = 1024 * 1024 * 10;
private static final int READ_BUFFER_SIZE = 16384;

private static ByteArrayOutputStream readResponseBody(HttpMethodBase method)
        throws IOException {

    int len;
    byte buff[] = new byte[READ_BUFFER_SIZE];
    ByteArrayOutputStream out = null;
    InputStream in = null;
    long byteCount = 0;

    in = method.getResponseBodyAsStream();

    out = new ByteArrayOutputStream(READ_BUFFER_SIZE);

    while ((len = in.read(buff)) != -1 && byteCount <= RESPONSE_SIZE_LIMIT) {
        byteCount += len;
        out.write(buff, 0, len);
    }

    if (byteCount >= RESPONSE_SIZE_LIMIT) {
        throw new IOException(
                "Size limited exceeded reading from HTTP input stream");
    }

    return (out);

}

person acvcu    schedule 18.09.2012    source источник
comment
Вы смотрели на HttpEntity.getContent()?   -  person Roger Lindsjö    schedule 18.09.2012
comment
Я добавлю его как ответ, чтобы другим было легче его найти.   -  person Roger Lindsjö    schedule 20.09.2012


Ответы (1)


Вы можете использовать HttpEntity.getContent(), чтобы получить InputStream для чтения от себя.

person Roger Lindsjö    schedule 19.09.2012