我有一个 HTTP Request Dispatcher 类,它在大多数情况下都能正常工作,但我注意到它在接收到较大的请求时会“停止”。调查问题后,我想也许我没有为缓冲区分配足够的字节。之前,我在做:
byte[] buffer = new byte[10000];
改成20000后好像不卡顿了:
String contentType = connection.getHeaderField("Content-type");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream responseData = connection.openInputStream();
byte[] buffer = new byte[20000];
int bytesRead = responseData.read(buffer);
while (bytesRead > 0) {
baos.write(buffer, 0, bytesRead);
bytesRead = responseData.read(buffer);
}
baos.close();
connection.close();
我这样做对吗?无论如何,我可以根据请求的大小动态设置缓冲区的字节数吗?
谢谢...
最佳答案
如果您愿意使用外部库,Apache IOUtils图书馆有一个 toByteArray这会将输入流转换为字节数组,而无需您进行任何操作。
就这么简单:
byte[] buffer = IOUtils.toByteArray(connection.openInputStream());
关于Java HTTP 请求缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653111/