1
Http Client 3.x 라이브러리의 일부 코드를 Http Components 4.x 라이브러리로 변환 중입니다. 이전 코드에는 응답이 특정 크기를 넘지 않았는지 확인하는 체크가 포함되어 있습니다. 이것은 getResponseBodyAsStream() 메소드를 사용하여 응답으로부터 스트림을 되 찾을 수 있고 크기가 초과되었을 때를 결정할 수 있기 때문에 Http Client 3.x에서 상당히 쉽습니다. HTTP 구성 요소에서 비슷한 방법을 찾을 수 없습니다.아파치 HttpComponents를 사용할 때의 응답 크기 제한
여기에 내가 할 노력하고있어의 예를 들어 이전 코드는 다음과 같습니다
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);
}
HttpEntity.getContent()를 보았습니까? –
그 덕분에, 고마워! – acvcu
다른 사람들이 쉽게 찾을 수 있도록 답변으로 추가하겠습니다. –