【发布时间】:2018-05-22 10:48:45
【问题描述】:
我有一个简单的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 标头。
发送未知大小的大响应的正确方法是什么?
【问题讨论】: