为什么不立即调用 doPost() ?客户端打开一个 HttpUrlConnection 并开始发布数据,定期刷新输出缓冲区。它使用 10 秒来完成帖子。我需要我的 servlet 接收帖子并在收到第一个字节后立即开始从 InputStream 读取。但是, doPost() 仅在帖子完成后调用。如何解决这个问题?这是否意味着 Web 容器正在缓冲请求?我怎样才能阻止它这样做?
客户端代码:
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("POST");
OutputStream output = con.getOutputStream();
for(int i = 0; i < 10; i++) {
byte[] buffer = new byte[10000];
output.write(buffer, 0, buffer.length);
output.flush();
System.out.println("partial POST done." + DateTime.now());
Thread.sleep(1000);
}
output.close();
小服务程序代码:
protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
System.out.println("doPost() " + DateTime.now());