私のアプリはファイルを配布し、統計を収集します。少し前に、ユーザーが Android からファイルをダウンロードしようとすると、サーバーが 1 つではなく 2 つのリクエストを受け取ったことに気付きました。Caused by: java.net.SocketException: Connection reset by peer: socket write error
2 番目の要求が正しく処理され、ユーザーが電話でファイルを受信したため、最初の要求は失敗しました。したがって、多かれ少なかれ問題ありませんが、そのような場合、私の統計は正しくありません。[他のスレッド][1] で同様の問題を見ました
[1]: https://stackoverflow.com/a/8579181/273418しかし、解決策はありません
ファイルを配信するサーブレットのコード
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);
}