我的应用程序分发文件并收集统计信息。前段时间我注意到如果用户尝试从 android 下载文件 - 服务器收到两个请求而不是一个。第一个请求失败,因为Caused by: java.net.SocketException: Connection reset by peer: socket write error
第二个请求已正确处理并且用户在手机上收到了文件。所以它或多或少都可以,但在这种情况下,我的统计数据不正确。我在 [另一个线程][1] 上看到了类似的问题
[1]:https ://stackoverflow.com/a/8579181/273418但没有任何解决方案
分发文件的servlet代码
try {
StringBuilder typeHeader = new StringBuilder("application/vnd.android.package-archive");
String contentType = FdConstants.CONTENT_TYPE_HEADER.getValue();
response.setHeader(contentType, typeHeader.toString());
StringBuilder dispositionHeader = new StringBuilder("attachment; filename=\"");
dispositionHeader.append(fileName.toUpperCase());
dispositionHeader.append("\"");
String contentDisposition = FdConstants.CONTENT_DISPOSITION_HEADER.getValue();
response.setHeader(contentDisposition, dispositionHeader.toString());
response.setContentLength(fileStream.available());
// copy it to response's OutputStream
IOUtils.copy(fileStream, response.getOutputStream());
response.flushBuffer();
} finally {
IOUtils.closeQuietly(fileStream);
}