Я преобразовываю некоторый код из библиотеки 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);
}