Java HTTP 请求缓冲区大小

标签 java buffer httprequest

我有一个 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/

相关文章:

perl - 尝试发布时出现“HTTP::消息内容必须为字节”错误

java - 为什么 main 方法不打印任何内容?

java - Apache Derby示例数据库问题; 'Unable to connect'

java - 为什么数组列表没有显示在回收器 View 中?

java - Firebase recyclerview 在 Release模式下不显示任何值,但在 Debug模式下完美运行

javascript - 使用缓冲区和流写入数据

node.js - 读取2字节utf8二进制数据

python - C++ 嵌入式 Python 和 create_string_buffer

node.js - 渲染页面,同时使 http 请求变得明确

java - 调用 request.getReader() 后重置 HttpRequest