0

私のアプリはファイルを配布し、統計を収集します。少し前に、ユーザーが 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);
}
4

1 に答える 1