tomcat - 将大型内容写入 servlet 响应失败
问题描述
我有一个简单的 servlet(在 Tomcat8 中运行),可以简写如下:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/plain");
OutputStream out = resp.getOutputStream();
byte[] b = "some very large content\n".getBytes()
for (int i=0; i<1000; i++) {
out.write(b);
}
}
我正在使用 Apache HTTPClient 来使用它,基本上是这样的:
CloseableHttpResponse response = ...;
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
对于小规模的数据,它可以正常工作,但如果数据超过一定大小,客户端不会使用响应。好像什么都没有发送?
需要注意的是,我事先不知道数据的大小,因此无法指定 Content-Length 标头。
发送未知大小的大响应的正确方法是什么?
解决方案
推荐阅读
- javascript - 如何创建一个 jquery 脚本来计算选中的复选框的数量
- visual-studio-code - 使用 C/C++ 扩展的不一致的 clang 格式应用程序
- c# - 我在视图中使用包含项目的列表,但它会引发转换错误,为什么?
- python - 全局语句无法按预期工作,无法在类中访问
- android - 片段中的 Android Kotlin RecyclerView 不起作用
- javascript - onRequest 与 onCall 返回 null
- git - 如何按文件类型过滤 repo 的拉取
- python - Leap Motion Controller - 不连接 cpp、python (mac)
- python - 为什么增加 nn.Linear 输入特征的大小会提高 CNN 模型的准确性?
- java - SpringBatch-如何将文件本身作为项目处理?